脚本宝典收集整理的这篇文章主要介绍了php – 在session_write_close之后读取会话变量,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
<?PHP session_start(); $_SESSION['test']='TEST_CONTENT'; echo '1: ',$_SESSION['test']; echo '<br>'; session_wrITe_close(); echo '2: ',$_SESSION['test'] ?>
现在,一些背景信息.我们有一个带有Frameset的Web应用程序(不要让我开始……不,没有钱可以改变它)我们发现在某些情况下我们的SESSION变量没有被写入数据库!经过一些艰苦的测试后,我们发现两个帧同时被加载,虽然它几乎从未发生过,但第一个被叫帧在第二帧之后完成.第一个被称为框架的是用先前制作的副本覆盖会话(因为,在脚本结束时它会写入会话).
我们现在的解决方案是尽快尝试在第一个被调用的帧上调用session_write_close(),但我们担心能够仍然读取会话变量(100%确定).
如何实现它很安静简单
session_start(); $_SESSION['timestamp'] = time();
这将放在您的脚本中.
当脚本停止时,它将保存到您的数据库,但等待停止,我们没有完成:P
然后检查当前记录中的时间戳是更高还是更低.如果它更低然后更新,否则忘记更新,什么都不做.应该考虑microtime().因为人们喜欢按f5.
这么新的想法,我认为它对生产来说更好一点,更安全
回答评论:
看看session handler,你可以自己创建PHP处理会话的功能.因此,您不必重构代码,只需添加.
然后在写入部分中,您说数据库更新id为x的记录,并且时间戳高于给定值.
对于实现,您应该在记录时间戳/ mincrotime中添加一列.在会话处理程序中,您可以节省请求的时间.所以你可以进行比较.然后你不需要在会话中节省时间:)(不在$_SESSION中,它保存在数据库中!)
以上是脚本宝典为你收集整理的php – 在session_write_close之后读取会话变量全部内容,希望文章能够帮你解决php – 在session_write_close之后读取会话变量所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。