您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

并发 - php flock用法

2024/2/25 13:35:07发布16次查看
因为一个php文件要定时处理文件,时间间隔为几秒,我怕处理时间太长的话,就会放生并发问题,所以使用了flock对文件加锁,并且是非阻塞的,这样后一个请求在前一个没处理完之前会直接退出,但使用了flock函数的效果跟我预期的不一样.
index.php 文件如下:

当我在浏览器中两个窗口同时访问这个文件,预期结果是第一个窗口会在5秒后显示get lock success,第二个窗口会立即显示get lock fail,因为是我设置了lock_nb非阻塞.但结果确不是这样,后访问的窗口的请求还是会被阻塞,在5秒后才会响应获得锁成功,但当我给第二个窗口的url后加上一个参数比如index.php?r=xxxx,第一个url还是index.php,这个时候第二个窗口的请求是非阻塞的.之后我又用两个不同的浏览器,一个火狐一个chrome浏览器同时访问,结果也是非阻塞的.所以对flock的正确用法产生了疑惑,希望能有人帮我解释一下这个flock的正确用法,谢谢
回复内容: 因为一个php文件要定时处理文件,时间间隔为几秒,我怕处理时间太长的话,就会放生并发问题,所以使用了flock对文件加锁,并且是非阻塞的,这样后一个请求在前一个没处理完之前会直接退出,但使用了flock函数的效果跟我预期的不一样.
index.php 文件如下:

当我在浏览器中两个窗口同时访问这个文件,预期结果是第一个窗口会在5秒后显示get lock success,第二个窗口会立即显示get lock fail,因为是我设置了lock_nb非阻塞.但结果确不是这样,后访问的窗口的请求还是会被阻塞,在5秒后才会响应获得锁成功,但当我给第二个窗口的url后加上一个参数比如index.php?r=xxxx,第一个url还是index.php,这个时候第二个窗口的请求是非阻塞的.之后我又用两个不同的浏览器,一个火狐一个chrome浏览器同时访问,结果也是非阻塞的.所以对flock的正确用法产生了疑惑,希望能有人帮我解释一下这个flock的正确用法,谢谢
建议使用数据库来管理锁。
浏览器的原因 看看这个 https://lordong.net/wp/post/1337.html
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product