2010-02-24 66 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返回Ajax调用domain.com的

AKA长轮询现在

,EV当没有会话数据时,我可以很好地工作(关闭浏览器并重新启动页面)。但是,一旦我重新加载页面并且它们是会话数据,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 2010-02-24 04:51:31

回答

7

我居然发现,这个问题正在引起(小时,调试和研究小时后),因为PHP会议锁定。然后,当新页面加载时,直到旧会话超时才会工作。 session_write_close()将修复它。

+0

你刚刚为我节省了很多时间。谢谢。 – richo 2011-08-04 05:42:00