在PHP中,给文件加读锁和写锁的一种方法是使用flock
函数。
flock
函数可以对一个已经打开的文件指针进行锁定或解锁操作。读锁(共享锁)用LOCK_SH
参数表示,写锁(排他锁)用LOCK_EX
参数表示。
例如,如果想给一个文件加上写锁,可以这样写:
$fp = fopen("filename", "a"); // 以追加模式打开文件
if (flock($fp, LOCK_EX)) { // 尝试加上写锁
fwrite($fp, "some data"); // 写入数据
flock($fp, LOCK_UN); // 解除锁定
} else {
echo "Unable to lock file!"; // 锁定失败
}
fclose($fp); // 关闭文件
如果想给一个文件加上读锁,可以这样写:
$fp = fopen("filename", "r"); // 以只读模式打开文件
if (flock($fp, LOCK_SH)) { // 尝试加上读锁
$data = fread($fp, filesize("filename")); // 读取数据
flock($fp, LOCK_UN); // 解除锁定
} else {
echo "Unable to lock file!"; // 锁定失败
}
fclose($fp); // 关闭文件