onRequestStart CFWheels

Geo*_*Geo 0 coldfusion cfwheels coldfusion-9

我在cfwheels中遇到了一些并发问题.

我在每次用户请求某事时正在执行的events/onrequeststart.cfm中都有一些代码.

测试用例:用户A - 请求时间:10秒用户B - 请求时间:2秒

如果用户B在用户A正在处理请求时发出请求,则用户B的设置将进入用户A,用户A将根据用户的B请求显示结果.

我尝试在onrequeststart.cfm上使用cflock但它似乎不起作用.我对cfwheels没有多少经验,所以我可能会尝试做一些逻辑错误的事情.

这是混淆代码的一部分.

    <cfquery name="currentUser" datasource="#application.ds#">
        select * from clientadmin where clientAdminid ='#session.clientadminid#'
    </cfquery>

    <cfquery name="currentClient" datasource="#application.ds#">
        select * from clientBrands where clientbrandID ='#currentUser.ClientBrandID#'
    </cfquery>



<cfset application.clientAdminSurveys = application.generalFunctions.clientSurveys(clientAdminID=session.clientAdminID, clientBrandID = currentUser.clientBrandID)>
<cfset application.AssociatedDoctors = application.generalFunctions.AssociatedDoctors(clientAdminID=session.clientAdminID, clientBrandID = currentUser.clientBrandID)>
Run Code Online (Sandbox Code Playgroud)

所以,我想我的问题是,如何避免这种情况发生?

Neo*_*nig 6

1)应用程序范围是"应用程序范围"(站点范围内的所有用户) - 您不应该在那里设置每个用户设置,就像您发现的那样,用户B覆盖用户A.使用会话范围为per用户的东西.因此,在最后两行中,您使用会话范围数据设置应用程序范围内容!

2)作为旁注,在轮子中,您可以使用application.wheels.datasourcename来获取数据库名称