$file = 'test.txt';
$fp = fopen($file, 'a');
//添加可实现不阻塞,从而跳过执行if为真的语句快
if(flock($fp, LOCK_EX|LOCK_NB)){ // 取得独占锁
fwrite($fp, "How Are You\r\n"); // 写入数据
fwrite($fp, "Show Me The Money\r\n"); // 写入数据
flock($fp, LOCK_UN); // 解锁
}else{
echo 'file locked';
}
fclose($fp);添加LOCK_NB(在非 Windows 平台上)可实现不阻塞,从而跳过执行if为真的语句快,但在通过浏览器测试下,确感觉还是被阻塞了,
通过搜索查看https://stackoverflow.com/questions/13331809/php-flock-non-blocking-still-block-why
才知道了原来是因为使用来自浏览器的相同url调用相同的脚本两次将通过相同的进程进行线程并且flock()函数在进程层上进行非阻塞工作,导致第二个脚本等待。

如果本文对你有帮助,欢迎打赏本站

支付宝扫码打赏
微信扫码打赏
