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)
所以,我想我的问题是,如何避免这种情况发生?
1)应用程序范围是"应用程序范围"(站点范围内的所有用户) - 您不应该在那里设置每个用户设置,就像您发现的那样,用户B覆盖用户A.使用会话范围为per用户的东西.因此,在最后两行中,您使用会话范围数据设置应用程序范围内容!
2)作为旁注,在轮子中,您可以使用application.wheels.datasourcename来获取数据库名称
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |