PHP 信号量(在同一浏览器中)
PHP semaphore (in same browser)
如果我想防止在同一个浏览器中多次执行代码,为什么PHP信号量不能在同一个浏览器或另一个浏览器选项卡中工作?
https://www.php.net/manual/en/intro.sem.php
此代码仅在不同的浏览器中有效,当我在同一浏览器中同时执行脚本时,为什么不能在同一浏览器中工作(php7.4-fpm + nginx )
$semaphore_key = 25;
$semaphore_max = 1;
$semaphore_permissions = 0666;
$semaphore_autorelease = 1;
$semaphore = sem_get($semaphore_key, $semaphore_max, $semaphore_permissions, $semaphore_autorelease);
if(sem_acquire($semaphore, true) === false) {
echo "error";
exit();
}else{
echo "ok\n";
}
sleep(30);
sem_release($semaphore);
我不明白为什么,但这是由 Chrome 浏览器缓存引起的,来自服务器的响应不包含任何缓存 headers,当我禁用浏览器缓存时,它的工作方式如下预计
如果我想防止在同一个浏览器中多次执行代码,为什么PHP信号量不能在同一个浏览器或另一个浏览器选项卡中工作?
https://www.php.net/manual/en/intro.sem.php
此代码仅在不同的浏览器中有效,当我在同一浏览器中同时执行脚本时,为什么不能在同一浏览器中工作(php7.4-fpm + nginx )
$semaphore_key = 25;
$semaphore_max = 1;
$semaphore_permissions = 0666;
$semaphore_autorelease = 1;
$semaphore = sem_get($semaphore_key, $semaphore_max, $semaphore_permissions, $semaphore_autorelease);
if(sem_acquire($semaphore, true) === false) {
echo "error";
exit();
}else{
echo "ok\n";
}
sleep(30);
sem_release($semaphore);
我不明白为什么,但这是由 Chrome 浏览器缓存引起的,来自服务器的响应不包含任何缓存 headers,当我禁用浏览器缓存时,它的工作方式如下预计