Zend框架会话过早到期

Ali*_*Ali 13 session zend-framework

我正在使用Zend Framework for PHP并使用Zend_Session模块处理会话.这是我在初始化程序(或引导程序)中的内容:

Zend_Session::start();
Zend_Session::rememberMe(864000);
Run Code Online (Sandbox Code Playgroud)

864000秒应该是好的10天,但我仍然被踢出大约一个小时(或者可能少一点).我已经通过设置为10秒来测试这个语句是否有效,并且确实在适当的时候被踢出去了,但是当我将它设置为非常高的值时,它不起作用!我在这里查看了一些文档:http: //framework.zend.com/manual/en/zend.session.html

我看到的另一种方法是使用以下方法:

$authSession = new Zend_Session_Namespace('Zend_Auth'); 
$authSession->setExpirationSeconds(3600); 
Run Code Online (Sandbox Code Playgroud)

现在,我有不同的命名空间.这是否意味着如果我想让它们过期,我必须为所有这些设置它?我还没有测试过这种设置过期的方法,但我真的很想看看这里的大师们对于解决这个问题的正确方法有何看法.非常感谢...

此外,有谁知道我怎么能这样做,以便会话永远不会到期?我已经尝试将第二个设置为0和-1,但是会引发错误.

小智 12

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

resources.session.save_path = APPLICATION_PATH "/../data/session/"
resources.session.gc_maxlifetime = 864000
resources.session.remember_me_seconds = 864000
Run Code Online (Sandbox Code Playgroud)

application.ini(如tawfekov所建议的)和

protected function _initSessions() {
    $this->bootstrap('session');
}
Run Code Online (Sandbox Code Playgroud)

Bootstrap.php(我通常先忘了).您必须为会话目录提供正确的访问权限(chmod 777).我在这里描述了这个问题.希望这将有助于下一个有同样问题的人.


小智 3

您的客户的计算机时钟、日期和时区需要正确设置才能使会话过期生效。否则,时间转换将关闭,并可能导致您的 cookie 在到达浏览器时立即过期。

  • 嘿,Shimon,我已经检查了这些设置,但感谢您抽出时间。 (2认同)