2010-02-24 12 views
6

Tipo di un problema strano, ok ecco la mia messa a punto ...PHP session_start è appeso

  1. chiamate domain.com legge da un Iframe sulla sub.domain.com
  2. sub.domain.com marche una chiamata AJAX per sub.domain.com/call.php~~V~~singular~~3rd
  3. sub.domain.com torna ajax chiamata a dOMAIN.COM

AKA lungo polling

Ora, ev tutto funziona perfettamente quando non ci sono dati di sessione (chiudo il browser e riavvia la pagina). Tuttavia, una volta ricaricata la pagina e i relativi dati di sessione, call.php esegue start_session() e si blocca lì.

Ho provato quasi tutto e non riesco a capirlo. Ho provato a distruggere la sessione, disinserendo tutte le variabili di sessione, modificando alcune impostazioni ini e nulla ha funzionato.

Ecco il codice del call.php in cui i dati di sessione è ...

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; 
     } 

Qualcuno ha qualche idea? Stavo pensando che potrebbe avere a che fare con il dominio, ma non ne sono sicuro.

Grazie!

+2

Benvenuti in SO Chris. È improbabile che tu riceva _queste risposte utili senza fornire esempi di codice. Non ci sono abbastanza dati qui per rendere questa domanda rispondente. Sarà probabilmente chiuso come "non una vera domanda". Suggerisco di fornire maggiori dettagli quando e se decidi di ripubblicarlo. – hobodave

risposta

7

realtà ho scoperto (dopo ore e ore di debug e la ricerca), che il problema è causato perché la sessione di PHP si blocca Quindi, quando viene caricata la nuova pagina, non funzionerà fino a quando scade la vecchia sessione. Un session_write_close() lo aggiusterà.

+0

Mi hai appena salvato un sacco di tempo. Grazie. – richo

Problemi correlati