我有一个非常简单的脚本,它在循环中增加session变量,其中包含一个sleep 1秒调用。
在状态.cfm我转储了session变量,可以看到它的增量;通过不时刷新页面。
但是,当我将会话管理从内存更改为redis时,会发生的是会话不会在循环中递增,当脚本结束时,它会存储循环的最后一个值。所以如果开了状态.cfm页面如果我不断刷新它不会反映更改,直到循环脚本完成并只显示最后一个值,这不符合我监视会话更改的目的。
指数1.cfm
<cfloop index="i" from="1" to="10">
<cfscript>sleep(1000)</cfscript>
<cfset session.counter.foo = i>
</cfloop>
<cfdump var="#session.counter#">
Checking status...
<cfdump var="#session.counter#">
2)
问题是tread结果没有保存在session中,并给出以下消息而不是thread result对象。
coldfusion.runtime.SessionScope$Serialization Problem
指数2.cfm
Setting Threads struct {foo="bar", details={}}....
<cfset session.threads_foo = "bar">
<cfset session.thread_details = structNew()>
Creating Thread and dumping....
<cfthread action="run" name="thread01">
<cfscript>sleep(2000);</cfscript>
<cfset thread.j=1>
<cfloop index="i" from="1" to="999999">
<cfset thread.j=thread.j+1>
</cfloop>
</cfthread>
<cfset session.thread_details = thread01>
Dumping session variable...
<cfdump var="#session#">
[DONE]<br><br>
Checking status session threads status...
<cfdump var="#session#">
在PHP中,session\u write\u close()函数关闭session的文件锁,这样就不用等到脚本结束,session文件就可以访问了。在coldfusion有这样的东西吗?我不确定,即使这样的功能存在,它将有助于redis会话,这已经是一个内存存储,而不是文件。
请引导