如何使会话在一定时间内有效

时间:2017-06-23 16:34:37

标签: php session cookies zend-framework

所以在这个zend 1应用程序中,当我进入开始页面时,我可以看到有一个名为PHPSESSID的cookie。 然后我登录(自定义登录),用户可以浏览受保护的页面。 但如果他处于非活动状态超过30分钟,那么当请求受保护的页面时,应用程序会将其重定向到登录页面。

我关注的是PHPSESSID。最初设定为30分钟。我通过将“28800”添加到似乎是setcookie的全局调用中来增加它。

当我重新加载页面时,我可以看到PHPSESSID将在8小时后过期。 尽管如此,使用仍然在30分钟后退出。 因此,更改cookie过期并没有给出任何结果。 下一步是什么?更改php会话持续时间? 目前的相关价值是:

session.cache_expire: 180
session.gc_divisor: 1000
session.entropy_length:32
session.gc_maxlifetime: 14400
session.gc_probability:1
session.name: PHPSESSID

或者这与框架本身有关吗?在Zend的某个地方调整会话的到期时间?

2 个答案:

答案 0 :(得分:1)

如果您正在使用zend,请尝试此操作。

$auth = Zend_Auth::getInstance();

if ($auth->hasIdentity()) {
    $authns = new Zend_Session_Namespace($auth->getStorage()->getNamespace());
    $authns->setExpirationSeconds(60 * 30); //expire auth storage after 30 min
}

答案 1 :(得分:1)

如果你有多个php站点在同一个目录中存储会话文件 - php gc进程可能有不同的会话集。在这种情况下,将会话文件存储在另一个,仅适用于您的站点目录。