【发布时间】:2021-04-20 17:57:17
【问题描述】:
我有一个在 PHP 5.3.29 上运行的 CakePHP 2.5.1 网站(尽管我已经使用更新的 2.10.18 版本进行了测试)(我知道,旧东西)。
我遇到的问题是,看似随机的(但大多数情况下)没有显示它们应该显示的时间,而是在我重新加载页面后显示再一次(或加载不同的页面)。
例如,当用户注销时(我使用 Auth 组件),我设置了类似 $this->Session->setFlash('Logout successful'); 的 flash 消息。因此,在正常情况下,用户单击注销链接,被重定向到站点的主页,并且该消息显示为 javascript 警报。我就是这样实现的:
<?php if( $this->Session->check('Message.flash') ){ ?>
<script type="text/javascript">alert('<?php echo $this->Session->flash(); ?>')</script>
<?php } ?>
问题是,这种情况并非每次都会发生,只是有时会发生。其他时候,根本不会显示 Flash 消息,但如果我刷新页面(或导航到同一站点的不同页面),THEN 会显示消息。
我不知道是什么原因造成的,也不知道如何解决它,因为它似乎是随机发生的。我尝试在 core.php 文件中禁用缓存并启用调试模式 (2),但没有任何变化。该网站使用数据库会话以防万一。
任何帮助找出这种情况将不胜感激!
编辑:
原来托管服务提供商启用了一些混淆会话的 PHP-FPM 缓存设置,在他们禁用后一切正常
【问题讨论】:
-
您尝试过不同的会话后端吗?您是否尝试过手动查询数据库以查看您的会话值是否实际存在?您是否正在使用复制?
-
@ndm 是的,我检查了数据库,那里的会话似乎很好。与托管服务提供商交谈,他们已经对 mod_expires 缓存设置进行了一些调整,现在看起来好多了,所以这可能是一个缓存问题,会继续测试。
标签: php cakephp cakephp-2.0