php文件锁疑问

[复制链接]
查看11 | 回复4 | 2021-1-27 06:49:20 | 显示全部楼层 |阅读模式
第一次访问之后,在十秒之内访问第二次会输出系统繁忙(两个浏览器),必须要
两个浏览器才行,为什么一个不行呢?
publicfunctiontest_lock(){
$fp=fopen("lock.txt","r");
if(flock($fp,LOCK_EX|LOCK_NB)){
echodate('Y-m-dH:i:s'),"
";
sleep(5);
echodate('Y-m-dH:i:s');
flock($fp,LOCK_UN);
}else{
echo"系统繁忙,请稍后再试1";
}
fclose($fp);
}
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:49:20 | 显示全部楼层
你把
sleep(5)改长一点大约30秒以上
然后我测试了cmd直接用php运行
下面这张是sleep10秒内,系统先打印了一个时间

后面那张是sleep10秒完毕,系统又打印了一个时间


大胆猜想原因:
与网页访问有关系,网页有请求最大超时限制30秒左右(默认的),你sleep时间设置过短,还在请求的范围内

回复

使用道具 举报

千问 | 2021-1-27 06:49:20 | 显示全部楼层
至于为什么多个浏览器就ok了
这个你可以试一下这种方式,在一个浏览器里开个30多个同一域名下的php构建的网站,它的执行是有先后顺序(一个一个加载)的
原因主要应该是浏览器本身的加载原则
回复

使用道具 举报

千问 | 2021-1-27 06:49:20 | 显示全部楼层
引用2楼u010798873的回复:至于为什么多个浏览器就ok了
这个你可以试一下这种方式,在一个浏览器里开个30多个同一域名下的php构建的网站,它的执行是有先后顺序(一个一个加载)的
原因主要应该是浏览器本身的加载原则

也就是请求很拦截了,等待一个网站加载后释放,再加载同一域名下的网站(应该是的,如果说的不对,不要喷我。。)
回复

使用道具 举报

千问 | 2021-1-27 06:49:20 | 显示全部楼层
flock在windows环境中无效
所以你的问题没有探讨的必要
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行