2010-02-24 37 views
6

Kind của một vấn đề lạ, ok ở đây là thiết lập của tôi ...? Php session_start được treo

  1. cuộc gọi domain.com đọc từ Iframe trên sub.domain.com
  2. sub.domain.com làm cho một cuộc gọi ajax để sub.domain.com/call.php
  3. sub.domain.com trả cuộc gọi ajax để domain.com

AKA dài bỏ phiếu

Bây giờ, ev erything hoạt động hoàn hảo khi không có dữ liệu phiên (tôi đóng trình duyệt và khởi động lại trang). Tuy nhiên, khi tôi tải lại trang và dữ liệu phiên của họ, call.php thực hiện lệnh start_session() và treo ở đó.

Tôi đã thử hầu hết mọi thứ và không thể tìm ra điều này. Tôi đã cố gắng phá hủy phiên làm việc, xóa tất cả các biến phiên, sửa đổi một số thiết lập ini, và không có gì đã làm việc.

Đây là mã của call.php nơi dữ liệu phiên là ...

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

Có ai có bất kỳ ý tưởng? Tôi đã nghĩ rằng nó có thể phải làm với tên miền nhưng tôi không chắc chắn.

Cảm ơn!

+2

Chào mừng bạn đến với SO Chris. Bạn không thể nhận được _any_ câu trả lời hữu ích mà không cung cấp ví dụ về mã. Không có đủ dữ liệu ở đây để làm cho câu hỏi này có thể trả lời được. Nó có thể sẽ được đóng lại là "không phải là một câu hỏi thực sự". Tôi đề nghị cung cấp chi tiết hơn nhiều khi nào và nếu bạn quyết định để repost nó. – hobodave

Trả lời

7

Tôi thực sự phát hiện ra (sau giờ làm và giờ gỡ lỗi và nghiên cứu) rằng vấn đề đã được gây ra bởi vì phiên PHP khóa lại. Sau đó, khi trang mới tải, trang sẽ không hoạt động cho đến khi phiên cũ hết hạn. Một session_write_close() sẽ sửa nó.

+0

Bạn vừa mới tiết kiệm cho tôi rất nhiều thời gian. Cảm ơn bạn. – richo

Các vấn đề liên quan