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


Symfony2 cache issue while setting session save path dynamically

我正在尝试在Bundle扩展类中动态设置会话保存路径

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

Symfony缓存扩展类

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

所以它使sessionDir等于第一次调用的用户的目录。

它对第一个用户正常工作,但对其他用户不起作用

我能做些什么来解决这个问题?

我通过编写自己的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');
    }
}

服务.yml

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

config.yml

framework:
   session:
        handler_id: custom_file_session_handler