$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()函数在进程层上进行非阻塞工作,导致第二个脚本等待。
如果本文对你有帮助,欢迎打赏本站