PHP利用文件锁实现并发加锁
1年前
阻塞模式
此模式下会等待文件锁释放后继续执行。
<?php
$fp = fopen("lock.txt", "w+");
if(flock($fp, LOCK_EX)) {
//所需执行的代码
flock($fp, LOCK_UN);
}
fclose($fp);
?>
非阻塞模式
此模式下会直接跳过所需执行的任务。
<?php
$fp = fopen("lock.txt", "w+");
if(flock($fp, LOCK_EX | LOCK_NB)) {
//所需执行的代码
flock($fp, LOCK_UN);
} else {
echo "系统繁忙,请稍后再试";
}
fclose($fp);
?>