首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZF3会话超时问题

ZF3会话超时问题
EN

Stack Overflow用户
提问于 2017-06-28 11:21:18
回答 1查看 1.4K关注 0票数 4

我一直面临与使用3的会话超时有关的问题。会话在5-10分钟内到期。我使用了会话的默认代码,Zf3骨架在global.php中提供了这些代码,如下所示。

代码语言:javascript
复制
// Session configuration.
'session_config' => [   
  'cookie_lifetime' => 60*60*1, // Session cookie will expire in 1 hour.
  'gc_maxlifetime' => 60*60*1,  // Store session data on server maximum for 1 hour. 
],

// Session manager configuration. 
'session_manager' => 
[
   'validators' => [
      RemoteAddr::class,
      HttpUserAgent::class,
    ]
],

// Session storage configuration.
'session_storage' => [
   'type' => SessionArrayStorage::class 
],

使用上述代码后,会话在5-10分钟内仍然过期,我希望会话过期时间超过30 minutes.How,以便在Zf3中配置它。

请提供解决方案。

EN

回答 1

Stack Overflow用户

发布于 2017-07-13 09:19:33

您拥有会话管理器的正确设置,但这还不足以将这些会话设置用作默认设置。

我的假设是,您不会将此会话管理器作为默认的会话管理器。为了做到这一点,您需要尽早实例化它。一种解决方案是在模块Module.php中这样做。

代码语言:javascript
复制
use Zend\Mvc\MvcEvent;
use Zend\Session\SessionManager;

class Module
{
    //...

    /**
     * This method is called once the MVC bootstrapping is complete. 
     */
    public function onBootstrap(MvcEvent $event)
    {
        $application = $event->getApplication();
        $serviceManager = $application->getServiceManager();

        // The following line instantiates the SessionManager and automatically
        // makes the SessionManager the 'default' one.
        $sessionManager = $serviceManager->get(SessionManager::class);
    }
}

参考文献

编辑:我的第二个假设是,您使用会话的全局路径(例如/var/lib/php/session)。

在Debian中,有一个cron可以根据您的php.ini会话设置(/etc/cron.d/php)清除会话。

这个cron使用您的php.ini "gc_maxlifetime“,并可能清除您的会话。

若要查找会话的保存位置,请使用session_save_path().检查您的会话目录。

要克服这一问题,您应该设置"save_path",并且不应该与服务器上的其他应用程序或脚本共享此路径(您不希望使用全局gc设置或自己的脚本来删除会话)。

添加

代码语言:javascript
复制
'save_path'           =>   '/path/to/app/data/sessions'

在你的“session_config”数组中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44801013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档