Сессии PHP блокируются с помощью длинного опроса ajax - PullRequest
0 голосов
/ 25 февраля 2010

У меня есть длинный запрос 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 не может быть вызвано до тех пор, пока не будет выполнен запрос на длинный опрос, поэтому я не могу просто получить данные сеанса и затем сразу их закрыть. 1008 *

Кто-нибудь может придумать способ обойти это?

Спасибо.

1 Ответ

0 голосов
/ 25 февраля 2010

Не могли бы вы вызывать session_start () и session_write_close () каждый раз, когда вам нужен доступ к сеансу? Я полагаю, вы можете получить дубликаты заголовков, но это не проблема.

edit это не сработает, потому что вы не можете вызвать session_start () после того, как отправили что-либо в браузер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...