在fwrite完成之前运行的代码(PHP)

时间:2017-07-27 04:07:09

标签: php session fwrite

我正在尝试进行一种会话跟踪。

在checkLogin.php中,登录过程成功后,它会将一个小的php数组写入一个带有用户名的txt文件中,并将用户名保存为会话变量。稍后用于跟踪用户是否处于非活动状态。通过Python脚本,如果用户处于非活动状态,则将从阵列中删除用户名。

在任何其他网页中,Web应用程序将包含txt文件,并检查会话变量中的用户名是否仍在数组中,如果不是,则会破坏会话并提示用户登录agn (用户已无效)。

但是,在第一次登录时,当应用程序检查数组中的会话用户名时,它始终返回未找到的前1-2秒并更改为之后找到的。我认为这是因为该文件仍在编写,因为applciation继续下一页。有没有办法让应用程序在转到下一页之前等待fwrite完成?

登录后,文本文件(user.txt)将如下所示

<?php activeUser= array("User1"); ?>
  

“User1”存储为$ _SESSION ['current_user']

在每个其他页面中,在代码顶部我都有

include 'user.txt';

if(in_array($_SESSION['current_user'], $activeUser))  {
    echo "Found";
    //User still active;
}
else {
    echo "Not Found";
    //session_destroy();
    //header("Location:index.php?status=userInactive");
}

登录并使用第二段代码到达主页后,显示“未找到”,但刷新后会更改为“找到”。

1 个答案:

答案 0 :(得分:0)

我从你的评论中推断出你希望你的代码是异步的,所以尝试使用try catch块。

        try {
            // try your time taking process here

        } catch(Exception $e) {
            // throw your failed case here
        }finally{ 
           // do the successfull case here
        }