我有一个功能可以在会话到期前 10 分钟前向登录用户显示警报。如果用户在指定时间内空闲,则会在会话到期前 10 分钟向用户显示确认信息。如果他希望继续当前会话他可以这样做,或者他可以延长会话。所以我像下面这样实现它。
//For extending the session expiry
public function extendsessionAction(){
$sessTimeOut = 1440;
$session = new Zend_Session_Namespace('Zend_Auth');
$session->reqTime = time();
$session->setExpirationSeconds($sessTimeOut);
$warnTime = 3000;
$session->warnTime = $warnTime;
$this->getHelper('viewRenderer')->setNoRender();
$this->_helper->layout()->disableLayout();
}
//For checking the session expiry
public function checksessionexpiryAction(){
$session = new Zend_Session_Namespace('Zend_Auth');
$reqTime = $session->reqTime;
$warnTime = $session->warnTime;
$sessTimeOut = 1440;
if((time() - $reqTime) >= $warnTime){
echo 'Warning';
}
else if((time() - $reqTime) >= $sessTimeOut){
echo 'Logout';
}
else{
echo 'Continue';
}
$this->getHelper('viewRenderer')->setNoRender();
$this->_helper->layout()->disableLayout();
}
以下是使用的客户端代码,它写在标题模板中,因此它将包含在所有页面中
$(document).ready(function(){
extendSessionExpiry();
checkSessionTimeEvent = setInterval("checkSessionExpiry()",8 * 60000);
});
function extendSessionExpiry(){
$.ajax({
url : base_url+'/default/Dashboard/extendsession',
type : 'post',
dataType: 'json',
success : function(result){
}
});
}
function checkSessionExpiry(){
$.ajax({
url : base_url+'/default/Dashboard/checksessionexpiry',
type : 'post',
success : function(result){
if(result == 'Warning'){
showSessionWarning();//Will show a popup to continue or extend the session.Extending the session will call extendSessionExpiry()
}
else if(result == 'Logout'){
dontWarn();
window.location = base_url+'/Index/logout';
}
}
});
}
所以我在我的应用程序中使用了zend服务器。我的问题是,如果在多个选项卡中打开应用程序,那么它将退出。这意味着会话即将过期。我听说这与zend服务器会话集群有关锁定机制。有人可以解释什么是 excat 问题。