<?php
$fp = fopen(__DIR__ . "/tmp/lock.txt", "r+");
// 进行独占型锁定
//默认情况下,该函数将堵塞直到获得锁;这可以通过 LOCK_NB 选项来控制。
// if (flock($fp, LOCK_EX)) {
if (flock($fp, LOCK_EX | LOCK_NB)) {
echo "获取独占锁成功" . PHP_EOL;
// 清除文件
ftruncate($fp, 0);
fwrite($fp, "Write something here\n");
// 释放锁之前刷新缓冲区
fflush($fp);
//模拟执行时间比较长的任务
sleep(10);
// 释放锁定
flock($fp, LOCK_UN);
echo "释放独占锁成功" . PHP_EOL;
} else {
echo "获取锁失败" . PHP_EOL;
}
fclose($fp);