如何避免在某些情况下将PHP会话保存到磁盘


How to avoid saving PHP session to disk under certain circumstances

我正在开发一个相当复杂的PHP站点,该站点在$_SESSION中存储了大量数据。一个标准请求涉及调用许多更新$_SESSION的函数。异常可能在计算的任何点引发,从而使$_SESSION中的数据不一致。

我必须避免不一致,只有在计算结束时才能保存数据。AFAIK PHP在脚本结束时将会话写入一个文件,因此如果我能阻止它这样做,我应该能够保持一致性,并在下次调用时准确地找到崩溃调用之前的$_session,对吧?

我该怎么做?我已经读到session_set_save_handler()可能是正确的方法,但我不想实现我自己的方法来存储会话,我对PHP的处理方式很满意,我只想在某些情况下能够防止它(例外)。

由于性能原因(数据量很大),无法通过在每次调用开始时序列化所有数据的副本以最终恢复来解决问题。此外,我对整个系统没有太多的控制权,所以我不能对代码进行任何"重要"的重构。

正如@Mark Baker在评论中所说,答案很简单:

session_abort()或session_reset(),如果您在>=5.60 上

糟糕的谷歌查询结果:"避免保存PHP会话磁盘"和这个SO问题:如何防止启动的PHP会话写入?误导我相信解决方案要困难得多。