PHP的session_start挂
问题描述:
样的奇怪问题,确定这里是我的设置...PHP的session_start挂
- domain.com从通话将iFrame读取sub.domain.com
- sub.domain.com品牌一个AJAX调用sub.domain.com/call.php
- 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;
}
有没有人有什么想法?我认为这可能与域有关,但我不确定。
谢谢!
答
在PHP中的默认会话存储是基于cookie的。如果您使用的是你必须在php.ini中设置域为您的会话cookie
http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-domain
答
我居然发现,这个问题正在引起(小时,调试和研究小时后),因为PHP会议锁定。然后,当新页面加载时,直到旧会话超时才会工作。 session_write_close()将修复它。
+0
你刚刚为我节省了很多时间。谢谢。 – richo 2011-08-04 05:42:00
欢迎来到SO Chris。没有提供代码示例,你不可能获得有用的答案。这里没有足够的数据来解答这个问题。它可能会被视为“不是真正的问题”。我建议在您决定重新发布时提供更多更详细的信息。 – hobodave 2010-02-24 04:51:31