简体   繁体   English

动态设置会话保存路径时的Symfony2缓存问题

[英]Symfony2 cache issue while setting session save path dynamically

I am trying to set session save path dynamically in Bundle extension class 我正在尝试在Bundle扩展类中动态设置会话保存路径

namespace AdminBundle\DependencyInjection;

class AdminExtension extends Extension{
...
   $sessionDir = $envDir . "session/store/$userDir/__sess";
   $container->setParameter("session.save_path", $sessionDir);
...
}

Symfony caches Extension class Symfony缓存扩展类

$sessionDir = $envDir . "session/store/12345/__sess";

So it make sessionDir equal to directory of user who make first call. 因此,它使sessionDir等于进行首次呼叫的用户目录。

It works normal for first user but doesn't work for others. 它对于第一位用户正常工作,但对其他用户无效。

What can I do to solve this problem? 我该怎么做才能解决这个问题?

I solved problem by writing my own NativeSessionHandler 我通过编写自己的NativeSessionHandler解决了问题

class NativeFileSessionHandler extends NativeSessionHandler
{

    /**
     * @param ContainerInterface $container
     */
    public function __construct(ContainerInterface $container)
    {
       ...
        ini_set('session.save_path', $envDir . "session/storefront/$userDir/__sess");
        ini_set('session.save_handler', 'files');
    }

}

services.yml services.yml

custom_file_session_handler:
    class: CoreBundle\Session\Handler\NativeFileSessionHandler
    arguments: [@service_container]

config.yml 配置文件

framework:
   session:
        handler_id: custom_file_session_handler

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM