2

当用户退出网页时,我需要执行一个操作,我想我会使用超时来这样做,它可以工作,但只有当我刷新/重新加载页面时,这不是我想要的,我需要它工作自动,如果用户处于非活动状态,比如说 5 分钟,我需要一个属于该用户的某个文件来销毁。我首先进行了以下测试以检查超时是否有效:

<?php
session_start();
//set timeout
$inactive=60;
 //check to see if timeout is set
if(isset($_SESSION['timeout'])){
 $session_life= time() - $_SESSION['timeout'];
 if($session_life > $inactive)
{session_destroy();
  echo "new message<br>";
}
}
$_SESSION['timeout']= time();
 echo "after one minute,a new message should be added.";
  ?>

它只有在我重新加载/刷新页面时才有效,我如何让它在所述时间范围内不活动后自动执行命令?提前谢谢。

4

3 回答 3

1

我认为最好的方法是设置一个每 5 分钟运行一次并删除文件的 CronJob。

也许使用session_set_save_handler将会话存储在 db 表中,并在上次活动时检查 cronjob。

您要删除的文件是否连接到用户或会话?

于 2012-10-23T19:42:04.030 回答
0

我不确定我是否给出了正确的答案,但是如果您询问在给定时间后自动使会话过期,您为什么不考虑设置

session.gc_maxlifetime

在您的php.ini文件中,我猜这是一个更有效的解决方案,如果上下文错误,请原谅。

如果您想删除文件系统中的某些数据,请使用 cron 作业或守护程序,如果您不希望从客户端回调来启动它。

于 2012-10-23T18:14:07.513 回答
-1

使用 javascript 的setInterval命令运行您的命令并使用该命令刷新页面。

于 2012-10-23T18:08:19.530 回答