Site icon 时鹏亮的Blog

PHP 文件锁

请知悉:本文最近一次更新为 5年 前,文中内容可能已经过时。

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

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

<?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


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《PHP 文件锁》相关的博文:

Exit mobile version