一、参数说明
$handle: 文件资源
$operation: 锁的类型
LOCK_SH: 共享锁
LOCK_EX: 排他锁
LOCK_UN: 释放锁
$wouldblock: 设置为true的时候,锁定文件时,会阻止其他进程
二、具体实现代码
/** * ?阻塞模式 */$file = fopen("lock.txt", "r");//进行排它型锁定,阻塞:后面的进程会一直等待前面的进程执行完毕if (flock($file, LOCK_EX)) {//加锁 ???//TODO 业务代码... ???//释放锁 ???flock($file, LOCK_UN);}fclose($file);
/** * ?非阻塞模式 */$file = fopen("lock.txt", "r");//进行排它型锁定,非阻塞:只要当前文件有锁存在,那么直接返回if (flock($file, LOCK_EX | LOCK_NB)) {//加锁 ???//TODO 业务代码... ???//释放锁 ???flock($file, LOCK_UN);} else { ???die("系统繁忙,稍后重试");}fclose($file);
PHP 之文件锁解决并发问题
原文地址:https://www.cnblogs.com/yang-2018/p/10387744.html