flock 文件锁的使用问题

189 阅读1分钟

加上 LOCK_NB 后可以通过函数的返回值来判断文件是否锁定,并执行锁定时执行的内容,如果在阻塞时想要有提示,可以使用这个,或者使用第三个参数,也是同样的功能 。不过这个文件锁会受到不同系统中不同的文件结构影响,所以建议不要使用,而是使用数据库中的锁

$handle = fopen('./1.txt', 'r');

$res = flock($handle, LOCK_EX | LOCK_NB, $block);

if ($res) {
    echo fread($handle, filesize('./1.txt'));
    sleep(3);
    flock($handle, LOCK_UN);
    fclose($handle);
} else {
    echo '文件已锁定';
}