PHP中怎么给文件加读锁和写锁

在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); // 关闭文件

Leave a Comment

豫ICP备19001387号-1