我在一个非常复杂的PHP网站上工作,该网站在$ _SESSION中存储了大量数据。标准请求涉及调用许多更新$ _SESSION的函数。计算的任何一点都可能抛出异常,使$ _SESSION中的数据不一致。
我必须避免不一致,只有在计算结束时才必须保存数据。 AFAIK PHP将会话写入脚本末尾的文件中,所以如果我可以阻止它执行它,我应该能够保持一致性,并在下次调用它时在崩溃的调用之前找到$ _SESSION的确切方式,正确?
我该怎么做? 我已经读过session_set_save_handler()可能是正确的方法,但我不想实现自己的方式来存储会话,我对PHP的做法很好,我只是想要能够在某些情况下防止它(例外)。
通过在每个调用开始时序列化所有数据的副本来解决问题,以便最终能够恢复它,因为性能(有很多数据)不是一个选择。此外,我对整个系统没有多少控制权,因此我无法做任何重要的事情。重构代码。
答案 0 :(得分:0)
正如@Mark Baker在评论中所说,答案很简单:
session_abort()或session_reset()如果您打开> = 5.6.0
查询的谷歌搜索结果不佳:“避免保存PHP会话磁盘”这个问题:How to prevent a started PHP session from writing?误导我相信解决方案要困难得多。