PHP会话使用ajax长轮询锁定

时间:2010-02-25 13:18:37

标签: php session

我有一个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>

有人能想到解决这个问题的方法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

每次需要访问会话时,是否可以同时调用session_start()和session_write_close()?我想你最终可能会发送重复的标题,但这可能不是问题。

编辑这不起作用,因为一旦向浏览器发送了任何内容,就无法调用session_start()