- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试处理来自同一浏览器 session 的两个几乎同时发生的请求。
考虑以下最小示例:
<?php
session_start();
$sessionId = session_id();
session_write_close();
$file = sys_get_temp_dir() . '/lock_test';
if (!file_exists($file)) {
touch($file);
sleep(5);
unlink($file);
echo 'done! ' . $sessionId;
} else {
echo 'locked! ' . $sessionId;
}
第二个请求应该导致“锁定”输出,但它总是等待第一个请求完成,然后输出“完成”。
Xdebug 没有运行。 PHP 版本为 5.5。
编辑:
投票将其作为重复项关闭。链接的问题表明要解决此问题,请附加一个随机变量。所以我建议附加一个 requestTime 变量并将其设置为微秒的时间戳。
最佳答案
这种行为是可以的。如果两个请求共享同一个 session 并且您正在使用文件来存储 session 数据,则 PHP 需要 flock()
session 文件以防止它被多个并发的请求破坏,这些请求将尝试写入文件。 (当然 PHP 将始终 flock()
session 文件,但是有多个并发请求共享同一个 session ,您可以看到它的效果)
关于PHP session 阻塞,忽略 session_write_close,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24951884/
从 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'] ?> 现在,一些背景信息。我们有一个带
我是一名优秀的程序员,十分优秀!