关于 PHP 的 flock() 函数的使用小问题 [ 未指定版本 ]
这个函数一般用来处理并发事件的
网上的例子
$fp = fopen("/tmp/lock.txt", "r+");
if (flock($fp, LOCK_EX)) { // 进行排它型锁定
/**
*这写需要执行的代码
**/
flock($fp, LOCK_UN); // 释放锁定
} else {
echo "Couldn't get the lock!";
}
fclose($fp);
但是其中需要执行的代码在并发的情况下所有用户进程都会执行,这是一个大坑啊。
所以 flock($fp, LOCK_EX)
要加上 flock($fp, LOCK_EX|LOCK_NB)
在锁定时阻塞,才不会出现多个进程都会执行,但这样也会导致,当一个进程执行程序时其它进程直接返回失败错误。
Mr_Xu
注册时间:2015-12-22
最后登录:2021-11-02
在线时长:16小时2分
最后登录:2021-11-02
在线时长:16小时2分
- 粉丝3
- 金钱70
- 威望20
- 积分430
共 1 条评论
看手册上面说默认不就是阻塞的吗?