Zend框架的会话过早终止(Zend framework session expires prema

2019-07-19 23:48发布

我使用Zend框架的PHP和处理与Zend_Session组件模块会话。 这是我在我的初始化程序(或引导):

Zend_Session::start();
Zend_Session::rememberMe(864000);

864000秒应该是不错的10天,但我仍然在大约一个小时踢出(小于或也许有点)。 我测试过,看看这个声明在所有工作将其设置为10秒,而事实上我在适当的时候踢了,但是当我将它设置为一个非常高的价值,这是行不通的! 我通过一些文件去这里: http://framework.zend.com/manual/en/zend.session.html

我看到了另一种方法是使用以下命令:

$authSession = new Zend_Session_Namespace('Zend_Auth'); 
$authSession->setExpirationSeconds(3600); 

现在,我有不同的命名空间。 请问如果我想阻止他们到期这意味着我必须设置此为所有这些? 我没有测试设置过期的这个方法,但是我真的很想看到这里的大师们说的话什么处理这个问题的正确方法是。 非常感谢球员...

此外,没有人知道我怎样才能让这个会话永不过期? 我试过设置第二个为0,-1,而是抛出一个错误。

Answer 1:

您的客户端的计算机时钟,日期,和时区需要被正确设置会话超时了工作。 否则,时间转换是关闭,并可能导致您的Cookie过期它击中他们的浏览器分钟。



Answer 2:

我有同样的问题,并通过将解决它:

resources.session.save_path = APPLICATION_PATH "/../data/session/"
resources.session.gc_maxlifetime = 864000
resources.session.remember_me_seconds = 864000

application.ini ( 如通过tawfekov建议 )和

protected function _initSessions() {
    $this->bootstrap('session');
}

Bootstrap.php (这通常我忘记在第一)。 你必须给会话目录正确的访问权限( chmod 777 )。 我所描述的问题在这里 。 希望这将有助于在未来的人用同样的问题。



Answer 3:

尝试调用启动会话之前记得我:

Zend_Session::rememberMe(864000);
Zend_Session::start();

否则,我相信它会使用默认的remember_me_seconds 。 参见49.4.4。 与rememberMe(整数$秒)

此外,没有人知道我怎样才能让这个会话永不过期? 我试过设置第二个为0,-1,而是抛出一个错误。

我不认为这是可能的。 这次会议是由是否在用户的计算机上存在的cookie进行控制。 这些Cookie可如果他们明确自己的缓存中删除,即使用户。 我认为你能做的最好是将其设置为一个非常大的数字。 说12个月。



Answer 4:

我猜你正在使用ZF 1.8以上,所以你可以把在config.ini文件

resources.session.save_path = APPLICATION_PATH “/../data/session” resources.session.remember_me_seconds = 864000

这些设置会自动再次加载只在ZF 1.8或以上的如果不是你不得不加载这些配置手动我希望它可以帮助你:)



Answer 5:

有没有在服务器上运行PHP应用程序?

您正在使用的标准假设,基于文件的会话处理程序,PHP将存储在同一个地方(通常是/ tmp)中的所有会话。

如果您在使用默认设置session_gc_maxlifetime服务器上的其他一些脚本,它可能是吃你的会话文件。

试试最简单的解决方法是配置PHP来存储会话文件,该应用程序在某处特别 - 这样的服务器上运行的其他应用程序将永远不会意外地从这个程序“清理”会话数据。

尝试创建一个目录如/ tmp目录/ myAppPhpSessions(或其他),并补充说:

ini_set('session.save_path','/tmp/myAppPhpSessions');
ini_set('session.gc_maxlifetime', 864000);

在引导文件的最顶端。

确保session.auto_start已关闭在php.ini



文章来源: Zend framework session expires prematurely