我有一个ajax长轮询请求,可以在第一页加载时正常工作。问题是当重新加载页面或浏览新页面时,PHP会话将被锁定,直到旧的PHP会话超时。
我有以下长轮询代码......
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,所以我不能只获取会话数据然后立即关闭它。 / p>
有人能想到解决这个问题的方法吗?
谢谢。
答案 0 :(得分:0)
每次需要访问会话时,是否可以同时调用session_start()和session_write_close()?我想你最终可能会发送重复的标题,但这可能不是问题。
编辑这不起作用,因为一旦向浏览器发送了任何内容,就无法调用session_start()