2010-02-24 3 views
6

Вид странный вопрос, хорошо здесь моя установка ...PHP session_start висит

  1. DOMAIN.COM вызовы читает из Iframe на sub.domain.com
  2. sub.domain.com марки Ajax вызов sub.domain.com/call.php
  3. sub.domain.com возвращает АЯКС вызов dOMAIN.COM

AKA давно опроса

Теперь, эв erything работает отлично, когда нет данных сеанса (я закрываю браузер и перезапускаю страницу). Однако, как только я перезагружаю страницу, а их данные сеанса, 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; 
     } 

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

Спасибо!

+2

Добро пожаловать в SO Chris. Вы вряд ли получите полезные ответы без каких-либо примеров кода. Данных здесь недостаточно, чтобы ответить на этот вопрос. Скорее всего, он будет закрыт как «не настоящий вопрос». Я предлагаю предоставить гораздо более подробную информацию, когда и если вы решите его перепроверить. – hobodave

ответ

7

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

+0

Ты только что спас мне РЕАЛЬНОЕ много времени. Спасибо. – richo