【发布时间】:2013-11-29 03:21:18
【问题描述】:
我不太确定这里发生了什么,在我搞砸我的会话数据之前,也许有人可以向我解释一下。
当用户登录时,我为该用户创建一个会话。会话是使用ini_set('session.save_path',...) 在特殊目录中创建的,以防止其他人查看它们。
在页面上,通过 Ajax 请求调用后台作业来处理一些数据。为此,我需要会话数据(我不需要在会话中写任何东西,只需要读取)。所以在后台页面我调用:
session_start();
$COPY=&$_SESSION;
session_write_close();
$_SESSION=&$COPY;
现在,虽然会话关闭了,但会话数据在整个过程中都是可用的。
看起来会话在后台作业中关闭后表现正常。我可以出于其他目的使用会话浏览页面,即使我在后台作业中放置了sleep(120);,主页也不会停止。但我不知道到底发生了什么。
那么,后台作业不再使用会话是否正确?还是 PHP 在某处创建一个新会话?以这种方式损坏会话数据是否有任何危险?
【问题讨论】:
-
如果会话仍然可以写入,而我在其他地方调用它,PHP 将等到会话关闭。