Coldfusion CFLock 在应用程序 obj

问题描述

所以我的问题如下,应用程序是否为每个页面调用执行了多次查询调用。为了删除这些,我决定创建一个应用程序 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 (将#修改为@)