Symfony2 session和cache:clear命令

时间:2015-07-09 08:27:13

标签: php symfony session caching

我使用Symfony会话来存储和检索用户在启动页面上选择的语言。如果他们没有语言设置,他们会直接重定向到启动画面。此行为按预期工作。

不幸的是,当我清除缓存时,我遇到了问题(我使用php app/console cache:clear --env=prod命令)。用户可以访问一个页面,然后在任何点击它们被重定向到启动画面。之后,即使他们选择了一种语言,他们也无法进入主页,任何点击都会再次重定向到泼水。

如果我手动删除缓存文件夹,则不会发生错误。

我的会话相关配置如下:

framework:
    session:
        handler_id:  ~
        gc_probability: 0

我的缓存目录中没有会话文件夹。 我可以在我的站点tmp文件夹中找到我的会话文件(会话ID和内容匹配用户会话cookie和语言选择)。它们在cache:clear命令后保留,但似乎Symfony无法再从这些文件中获取值。此外,没有为这些用户创建新的会话文件,似乎无法在任何地方编写新的语言选择。

我的本​​地开发环境(改进的Homestead)没有错误,但我在其他所有环境(开发,升级,生产)上都有错误

使用$ session-> invalidate();在启动页面上将解决问题。但我想了解它为什么会发生。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以更改Symfony保存会话数据的目录,以便在清除缓存时会话保持活动状态。您只需要更改框架配置即可。 例如:

#config.yml
framework:
    session:
        save_path: "%kernel.root_dir%/sessions"

doc

中的进一步参考

希望这个帮助

答案 1 :(得分:0)

您是否处于多服务器环境中?如果是这样,我建议在DB中存储会话:http://symfony.com/doc/current/cookbook/configuration/pdo_session_storage.html

相关问题