PHP Session_start зависает

Своего рода странная проблема, хорошо вот моя установка...

  1. domain.com называет чтения от Iframe на sub.domain.com
  2. sub.domain.com выполняет ajax вызов на sub.domain.com/call.php
  3. sub.domain.com отвечает на звонок ajax на domain.com

Иначе длинный опрос

Теперь, все работает отлично, когда нет никаких данных сессии (я закрываю браузер и перезапускаю страницу). Однако, после того как я перезагружаю страницу, и их данные сессии, call.php делает start_session () и зависает там.

Я попробовал почти все и не могу понять это. Я попытался уничтожить сессию, сбросив все переменные сеанса, изменив некоторые ini настройки, и ничто не работало.

Вот код call.php, где данные сессии...

session_start();

        $sql = ("SELECT userid FROM status WHERE typing = '".mysql_real_escape_string($userid)."'");
        $result = mysql_query($sql);

        if ($result && mysql_num_rows($result) > 0) {
            $row = mysql_fetch_array($result);
            $typing_id = $row['userid'];
            if (!empty($typing_id)) {
                if (isset($_SESSION['typing2'])) {
                    unset($_SESSION['typing2']);
                }
            } else {
                $typing_id = "-1";
            }
        } else {
            $typing_id = "-1";
            if (isset($_SESSION['typing'])) {
                unset($_SESSION['typing']);
            }
        }

        if ($_SESSION['typing'] != $typing_id && !isset($_SESSION['typing2']) || $initialize == "1") {
            $typing = array('typing_id' => $typing_id);
        }

        if ($typing_id == "-1") {
            $_SESSION['typing2'] = "-1";
        } else {
            $_SESSION['typing'] = $typing_id;
        }

У кого-либо есть какие-либо идеи? Я думал, что это могло бы иметь отношение к домену, но я не уверен.

Спасибо!

6
задан Chris 24 February 2010 в 05:08
поделиться

2 ответа

Я действительно выяснил (после многих часов отладки и исследований), что проблема возникает из-за блокировки PHP-сессии. Затем, когда загружается новая страница, она не будет работать, пока не завершится старая сессия. Функция session_write_close() исправит это.

7
ответ дан 16 December 2019 в 21:38
поделиться

Хранение сеансов по умолчанию в php основано на файлах cookie. если вы его используете, вы должны установить домен для cookie сеанса в php.ini

http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-domain

1
ответ дан 16 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: