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

时间:2015-11-27 07:22:07

标签: php symfony

我正在尝试在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等于第一次调用的用户的目录。

第一位用户正常工作,但对其他用户不起作用。

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

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

<强> config.yml

framework:
   session:
        handler_id: custom_file_session_handler