我希望我的页面能够持续检查用户会话是否仍处于活动状态。 如果使用事件监听器。我担心的是php文件执行时间有限。有没有办法将PHP执行设置为无限?或者有更好的方法吗?
JS:
$(document).ready(function() {
var loginSource = new EventSource("/structure/ajax/check_login_session.php");
loginSource.addEventListener("login-verification", function(e) {
var response = JSON.parse(e.data);
if (data.login_failed) {
login_fail_redirect();
}
});
})
PHP
function send_response() {
if (empty($_SESSION['user_info']) || empty($_SESSION['user_info']['active'])) {
$response = array("status" => "failed", "login_failed" => 1);
} else {
$response = array("status" => "success", "login_failed" => 0);
}
echo "event: login-verification\n";
echo 'data: '.json_encode($response);
echo "\n\n";
flush();
}
while (true) {
send_response();
sleep(2);
}
答案 0 :(得分:0)
使用javascript setInterval
代替。它会将定时请求发送到后端,以检查会话是否处于活动状态。
$(document).ready(function() {
setInterval(function {
var loginSource = new EventSource("/structure/ajax/check_login_session.php");
loginSource.addEventListener("login-verification", function(e) {
var response = JSON.parse(e.data);
if (data.login_failed) {
login_fail_redirect();
}
});
},1000); //time in ms
})
然后从您的后端替换此代码:
while (true) {
send_response();
sleep(2);
}
到
send_response();