gpt4 book ai didi

php - 在 session_write_close 之后读取 session 变量

转载 作者:可可西里 更新时间:2023-10-31 23:41:28 26 4
gpt4 key购买 nike

首先,我的具体问题。这应该工作吗?

<?php 
session_start();
$_SESSION['test']='TEST_CONTENT';

echo '1: ',$_SESSION['test'];
echo '<br>';

session_write_close();

echo '2: ',$_SESSION['test']
?>

现在,一些背景信息。我们有一个带有框架集的 Web 应用程序(不要让我开始......不,没有钱来改变它)我们发现在某些情况下我们的 SESSION 变量没有被写入数据库!经过一些艰苦的测试后,我们发现两个框架正在同时加载,虽然这种情况几乎从未发生过,但第一个调用的框架在第二个框架之后完成。第一个调用的框架正在用先前制作的副本覆盖 session (因为在脚本结束时它会写入 session )。

我们现在的解决方案是尝试尽快在第一个调用的帧上调用 session_write_close(),但我们担心仍然能够读取 session 变量(100% 确定)。

最佳答案

考虑一下,您可以通过其他方式实现。

实现起来很简单

session_start();
$_SESSION['timestamp'] = time();

这将放在您的脚本中。

当脚本停止时,它会被保存到你的数据库中,但是等待停止,我们还没有完成:P

然后检查当前记录中的时间戳是高还是低。如果它低于更新,否则忘记更新并且什么都不做。应该考虑 microtime()。因为人们喜欢按 F5。

非常新的想法,我认为它的效果更好,并且可以节省生产成本


回答评论:

session handler ,你可以让你自己的函数如何 php 处理 session 。因此,您不必重构代码,只需添加即可。

然后在写入部分,您告诉数据库更新 ID 为 x 且时间戳高于给定值的记录。

对于实现,您应该向记录时间戳/mincrotime 添加一列。在 session 处理程序中,您保存请求的时间。所以你可以进行比较。那么你也不需要在 session 中保存时间:)(不在 $_SESSION 中,它保存在数据库中!)

关于php - 在 session_write_close 之后读取 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com