我正在开发一个基于cakephp 3的项目,该项目在处理器和内存使用方面的php和mysql方面都是中等重量,但是99%的时间都向用户提供完全相同的页面。
所以我决定使用我几年前开发的像this one这样的缓存系统。它只保存完整页面的缓存html文件,避免对每个请求进行所有详细说明。这是一个愚蠢的系统,但它的工作做得很好。
问题是,我需要访问会话变量进行一些检查。为此,我在我的缓存系统中触发session_start()
,有时,当页面尚未缓存时,cakephp会抛出此错误:
Session was already started
如何避免此错误?有没有办法在我的缓存系统中关闭会话,以便cakephp最终可以启动一个新的?我尝试使用session_abort
和session_register_shutdown()
,但是没有用,我甚至不确定这是否是我需要做的正确方法......
编辑:处理流程为:请求 - >缓存系统 - > CakePHP的。因此我的session_start()
出现在cakephp之前,我宁愿不接触cakephp核心文件,这就是为什么其他问题对我没用。我想在我的缓存系统中解决这个问题。
答案 0 :(得分:0)
在尝试调用session_start();
之前,您可以检查会话是否尚未启动if(!isset($_SESSION)) {
session_start();
}