如果服务器处于空闲状态,php会话在第一次尝试时失败

如果服务器处于空闲状态,php会话在第一次尝试时失败,php,session,Php,Session,由于某些原因,如果服务器空闲一段时间(例如几个小时),第一次登录尝试将失败 情况就是这样: 用户导航到登录脚本 脚本设置会话变量并重定向到主页面 主页面应该能够读取会话变量(但在这种情况下失败) PHP错误日志中没有任何注释,第二次尝试可以正常工作。这只发生在空闲时间后第一个用户访问页面时。例如,如果另一个用户尝试在5秒后登录,则一切正常 这是在IIS7上使用FastCGI的PHP5.3 你知道这里出了什么问题,或者我能做些什么来找到解决方案吗 这大致就是脚本的设置方式 login.php: @

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

情况就是这样:

  • 用户导航到登录脚本
  • 脚本设置会话变量并重定向到主页面
  • 主页面应该能够读取会话变量(但在这种情况下失败)
  • PHP错误日志中没有任何注释,第二次尝试可以正常工作。这只发生在空闲时间后第一个用户访问页面时。例如,如果另一个用户尝试在5秒后登录,则一切正常

    这是在IIS7上使用FastCGI的PHP5.3

    你知道这里出了什么问题,或者我能做些什么来找到解决方案吗

    这大致就是脚本的设置方式 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
    }
    

    拆下三条管路

    session_write_close();
    session_unset();
    sleep(200000); 
    

    我只能说,检查你的代码。如果你能粘贴你的代码,我们可以帮你检查。我同意@AbhishekSaha。但据我目前所知,您可能需要检查会话是否正确地以
    session_start()一致地启动在你需要的每一页上。谢谢,我会尝试一下。你有没有关于为什么这些行会导致问题以及为什么只在第一次登录尝试时出现问题的理论?好吧,session\u write\u close不允许你写更多的会话。取消设置将删除所有会话变量。睡眠是有效的,但你需要小心使用。我用手机打字,所以不能解释所有的事情。我会在晚些时候详细写。