如何在php中检查系统是否空闲?

如何在php中检查系统是否空闲?,php,javascript,jquery,Php,Javascript,Jquery,我正在开发一个项目管理系统。我正在尝试跟踪用户的工作时间。时间跟踪页面包含一个计时器,用户在开始工作之前开始跟踪。 它工作正常,但在系统关闭或空闲的情况下,时间跟踪器不会停止。如何检查系统(不是浏览器窗口或选项卡)是否空闲?如果浏览器选项卡已关闭,我希望显示确认消息。我正在使用代码 $( [window, document] .on( 'beforeunload ', function () { //alert }); 但是“beforeunload”不能返回任

我正在开发一个项目管理系统。我正在尝试跟踪用户的工作时间。时间跟踪页面包含一个计时器,用户在开始工作之前开始跟踪。 它工作正常,但在系统关闭或空闲的情况下,时间跟踪器不会停止。如何检查系统(不是浏览器窗口或选项卡)是否空闲?如果浏览器选项卡已关闭,我希望显示确认消息。我正在使用代码

    $( [window, document] .on( 'beforeunload ', function () {
        //alert
    });

但是“beforeunload”不能返回任何值。如何在javascript跟踪系统中的beforeunload函数中返回true或false值并不是一个更安全的方法,因此检测窗口/选项卡关闭是最好的选择

将“时间”标志设置为会话数据,并检查会话是否仍然是“新的/未超过证书限制”,以使它们在每次页面加载时保持登录(或您的功能)

//on pageload
session_start();

$idletime=60;//after 60 seconds the user gets logged out

if (time()-$_SESSION['timestamp']>$idletime){
    session_destroy();
    session_unset();
}else{
    $_SESSION['timestamp']=time();
}

//on session creation
$_SESSION['timestamp']=time();
另一个选项:

<?php

/* set the cache limiter to 'private' */
session_cache_limiter('private');

$cache_limiter = session_cache_limiter();

/* set the cache expire to 30 minutes */
session_cache_expire(30);

$cache_expire = session_cache_expire();

/* start the session */
session_start();

echo "The cache limiter is now set to $cache_limiter<br />";
echo "The cached session pages expire after $cache_expire minutes";

?>


参考资料:

出于安全原因,从网页访问系统信息的可能副本受到很大限制。所以我想说你不能(也许有一些Flash黑客,我不知道)。我建议检测窗口/选项卡关闭是您最好的选择(尽管我听说它不是故障安全的),或者可能是一个javascript间隔,它会持续ping服务器说“我仍然在这里”,然后您服务器可以监视停止“ping”监视用户的用户,这样做是不好的。