我有一个PHP应用程序,无论服务器设置如何,我都希望会话保持活动状态。我进行了如下ajax调用,以便在一定间隔内通过ajax调用服务器...
<script type="text/javascript">
jQuery(document).ready(function(){
var refresh_session = function(){
var refresh_interval = 180000;
setTimeout(function(){
jQuery.ajax({
url: 'refresh-session.php',
cache: false,
success: function(){
refresh_session();
}
});
}, refresh_interval);
}
refresh_session();
});
</script>
在服务器中,我有此代码...
<?php
@session_start();
$_SESSION['last_refreshed_time'] = time();
echo date('Y-m-d H:i a', $_SESSION['last_refreshed_time']).' - '.session_id();
?>
我看到在指定的时间间隔进行了ajax调用,并且我可以在每个ajax输出上看到相同的会话ID。但是,如果我在30分钟后刷新,页面仍会注销。。。有人可以告诉我为什么即使在几分钟之内进行服务器呼叫,在这种情况下会话仍无法正常运行吗?
答案 0 :(得分:0)
如果服务器会话超时为30分钟,则意味着1800段,这意味着脚本中的时间为180000微秒,但是执行该脚本时,会话已过期。您必须在会话终止之前刷新会话。尝试将值更改为1790段或179000微秒,以便您有10秒的时间执行ajax并刷新会话。
将此变量更新为179000
var refresh_interval = 179000;