文件锁在应对并发处理的时候是一个很不错的避免出错的方案。所以整理一下关于文件锁实现的代码。

以下代码为阻塞模式的文件锁和非阻塞模式的文件锁:

<?php
#阻塞模式(后面的进程会一直等待前面的进程执行完毕)
public function example1()
{
$file = fopen('文件路径','w+');
//加锁
if (flock($file,LOCK_EX)) {
//业务代码
flock($file,LOCK_UN);//解锁
}
//关闭文件
fclose($file);
}
#非阻塞模式(只要当前文件有锁存在,那么直接返回)
public function example2()
{
$file = fopen('文件路径','w+');
//加锁
if (flock($file,LOCK_EX|LOCK_NB)) {
//业务代码
flock($file,LOCK_UN);//解锁
} else {
//TODO 执行业务代码 返回系统繁忙等错误提示
}
//关闭文件
fclose($file);
}

相关参考:
https://www.php.net/manual/zh/function.flock.php
https://www.cnblogs.com/zhouguowei/p/9708380.html



Related Posts: PHP 文件锁 :

留言