问题描述
所以我的问题如下,应用程序是否为每个页面调用执行了多次查询调用。为了删除这些,我决定创建一个应用程序 obj 或会话 obj。我决定使用应用程序 obj,因为我不想将 obj 添加到会话范围。认为这对于所有用户使用最多内存的会话范围来说可能很糟糕。另一方面,如果我使用应用程序 obj,我会不会因为到处都有额外的锁而降低性能。
现在应用程序 obj 正在设置会话变量,我需要应用程序锁还是会话锁。从我一直在阅读的内容看来,我什至不需要会话锁。如果这是会话 obj,我看不到竞争条件,但如果它是应用程序 obj,则可能存在问题。
**OnApplicationStart
<cfset application.objSessionSecurity = createObject("component","common.cfc.SessionSecurity")>**
**later in the appliction.
<cfset application.objSessionSecurity.setSessionSecurity(session.loginuser.persona_skey)>
<cfset application.objSessionSecurity.setSessionVaraibles()>**
对象代码。
<cffunction name="setSessionSecurity" access="public" description="set session security privilages" >
<cfargument name="personaSkey" required="true" type="numeric">
<cflock scope="session" timeout="30" type="EXCLUSIVE">
<cfquery datasource="#request.dsn.otm#" name="allPrivs">
SELECT pp.privilege_code
FROM persona_privilege_vw pp
WHERE pp.persona_skey = <cfqueryparam cfsqltype="cf_sql_numeric" value="#arguments.personaSkey#">
</cfquery>
<cfset session.PrivList = ValueArray(allPrivs.privilege_code)>
</cflock>
</cffunction>
所以我猜这同时是两个问题,我应该使用 sessionObj 还是应用程序 obj。 ?
如果是应用程序 Obj,我是否还需要围绕会话变量的 cflock,如果需要,是什么类型、应用程序或会话?
先谢谢你。 大卫。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)