- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
首先,我的具体问题。这应该工作吗?
<?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/
从 PHP5.6 升级到 PHP7 时,我遇到了以下错误: sapi_apache2.c(326): PHP Warning: session_write_close(): Failed to wr
所以我有一个运行 joomla 的网站,我尝试从 CMS 管理仪表板将 session handler 设置为 redis。我在主页和我访问的网站的所有其他页面上收到以下错误。 Error: Fail
我想知道 session_write_close() 做了什么。我发现手册有点含糊。我有一些非常大的 SELECT 查询。在那些 SELECT 查询之前,我调用了 session_write_clos
我正在尝试处理来自同一浏览器 session 的两个几乎同时发生的请求。 考虑以下最小示例:
在 Laravel 中的 sleep() 之前运行 session_write_close() 似乎无法正常工作,因为在当前连接完成之前, session 仍然被其他请求阻止。 我正在尝试在 Lara
我有一个页面,我在此页面的开头进行了长时间的轮询 session_start(); session_write_close(); 因为: to prevent concurrent writes on
php/symfony 专家! 这个问题特别适合你。 试试这个代码示例 /** * @Route("/your-route", name="your-route") */ public funct
在我的框架中,我多次调用 session_write_close()。 让我们假设一个与用户代理的 session 已经启动。以下代码... foreach($i = 0; $i < 3; $i++)
首先,我的具体问题。这应该工作吗? '; session_write_close(); echo '2: ',$_SESSION['test'] ?> 现在,一些背景信息。我们有一个带
我是一名优秀的程序员,十分优秀!