繁体   English   中英

Symfony2 session和cache:clear命令

[英]Symfony2 session and cache:clear command

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

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

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

我的会话相关配置如下:

framework:
    session:
        handler_id:  ~
        gc_probability: 0

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

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

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

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

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

文档中进一步参考

希望这个帮助

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

暂无
暂无

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

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