2012-11-02 46 views
0

由于某些原因,如果服务器闲置一段时间(例如几个小时),第一次登录尝试将失败。如果服务器空闲,php会话首次尝试失败

这是发生了什么:

  1. 用户导航到登录脚本
  2. 脚本设置会话变量并重定向到主画面
  3. 的主页应该能够读取会话变量(但在这种情况下失败)

没有在PHP错误日志中的言论,第二次尝试正常工作。只有第一个用户在空闲时间之后访问页面才会发生。例如,如果另一个用户在5秒后尝试登录,则一切正常。

这是在使用FastCGI的PHP 5.3的IIS7上。

任何想法这里有什么不对或我能做些什么来找到解决方案?

这是大致了解脚本是 的login.php:

@session_start(); 
$_SESSION['userid'] = $userid; 
session_write_close(); 
session_unset(); 
usleep(200000);  
header('Location:index.php'); 

主要脚本

session_start(); 
if (isset($_SESSION['userid'])) { 
    // Login successful 
} 
+1

我只能说,检查你的代码。如果您可以粘贴您的代码,我们可以为您检查它。 –

+0

我同意@AbhishekSaha。但是到目前为止我的理解是,您可能需要检查会话是否在每个需要会话的页面上使用'session_start();'始终正确启动。 – Ariaan

回答

1

取出三行。

session_write_close(); 
session_unset(); 
sleep(200000); 
+0

谢谢,我会试试看。您是否有理由解释为什么这些行会导致问题,为什么只有第一次登录尝试? – Tom

+0

那么,session_write_close不允许你写更多的会话。取消设置将删除所有会话变量。睡眠工作,但你需要小心使用。我从手机打字,因此无法解释所有内容。晚些时候会详细写下。 –

+0

经过测试,但没有解决问题。不管怎么说,还是要谢谢你 – Tom

相关问题