有点奇怪的问题,好的,这是我的设置...
- domain.com 调用从 sub.domain.com 上的 Iframe 读取数据
- sub.domain.com 对 sub.domain.com/call.php 进行 ajax 调用
- sub.domain.com 返回对 domain.com 的 ajax 调用
又名长轮询
现在,当没有 session 数据时一切正常(我关闭浏览器并重新启动页面)。但是,一旦我重新加载页面并且它们是 session 数据,call.php 就会执行 start_session() 并卡在那里。
我几乎尝试了所有方法,但无法解决这个问题。我试过销毁 session 、取消设置所有 session 变量、修改一些 ini 设置,但没有任何效果。
这是 session 数据所在的 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;
}
有人有什么想法吗?我在想这可能与域有关,但我不确定。
谢谢!
最佳答案
我实际上发现(经过数小时的调试和研究)问题是由 PHP session 锁定引起的。然后,当新页面加载时,它不会工作,直到旧 session 超时。 session_write_close() 将修复它。
关于PHP Session_start 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2323734/