关于PHP的flock函数的LOCK_NB的问题,大神帮忙解答下

Castiel_卡西迪奥 2016-12-13 04:57:18
这段代码,并没有达到想要的效果;

如果我同时(瞬间开5个)运行此程序,

按理说应该第1个“正在执行”,其他4个“系统繁忙”,

为什么“LOCK_NB”没有起到作用呢?

而现在的情况是:执行完第1个,就执行第2个,以此类推。

<?php

class TestAction extends CommonAction{
public function test(){
$x = fopen("./Admin/Public/lock.txt", "w+");
if (flock($x, LOCK_EX|LOCK_NB)) {
print "正在执行...";
fwrite($x , "000\n");
sleep(5);
flock ( $x , LOCK_UN ); // 释放锁定
} else {
print "系统繁忙...";
}
fclose($x);
}
}


对了,我的服务器环境是debian+nginx+php5.6
...全文
378 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 fdipzone 的回复:
如果你是在本机测试,你要分两个不同的浏览器测试。 例如一个chrome,一个firefox, chrome先执行,firefox再执行,就可以看到效果了,如果你用同一个浏览器会等待的。 参考:http://blog.csdn.net/fdipzone/article/details/43839851#t3
测试了一下,还真是这样的。感谢。
傲雪星枫 2016-12-18
  • 打赏
  • 举报
回复
如果你是在本机测试,你要分两个不同的浏览器测试。 例如一个chrome,一个firefox, chrome先执行,firefox再执行,就可以看到效果了,如果你用同一个浏览器会等待的。 参考:http://blog.csdn.net/fdipzone/article/details/43839851#t3
  • 打赏
  • 举报
回复
没人回答嘛~
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
如果你不希望 flock() 在锁定时堵塞,则给 operation 加上 LOCK_NB
我不希望堵塞,并且我也加了LOCK_NB,但事实上并没有效果。不知道怎么回事。
xuzuning 2016-12-13
  • 打赏
  • 举报
回复
如果你不希望 flock() 在锁定时堵塞,则给 operation 加上 LOCK_NB

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧