PHP会话锁定了ajax长轮询
问题描述:
我有一个ajax长轮询请求,在首页加载时工作正常。问题是当页面重新加载或浏览新页面时,PHP会话被锁定,直到旧的PHP会话超时。PHP会话锁定了ajax长轮询
我有以下的长轮询代码...
while (time() - $time < 55) {
if ($userid != 0) {
updateUserSession();
fetchMessages();
getTyping();
//getNotifications();
if (!empty($response)) {
header("Content-Type: text/plain");
echo json_encode($response);
exit;
}
}
sleep(2);
}
我在顶部的session_start。
现在,问题是getTyping函数可能需要设置会话,所以在完成长轮询请求之前无法调用session_write_close,所以我不能只获取会话数据,然后立即关闭会话数据。
任何人都可以想到解决这个问题的方法吗?
谢谢。
答
您是否每次需要访问会话时都可以调用session_start()和session_write_close()?我猜你可能会发送重复的标题,但这可能不是问题。
编辑这是行不通的,因为你不能调用session_start(),一旦你已经发送任何内容到浏览器
我甚至没有尝试,我还以为你只能启动一个会话一次? – Chris 2010-02-25 13:27:12