来看看 PHP manual 上面经典的实例:
$fp = fopen("/tmp/lock.txt", "w+");
if (flock($fp, LOCK_EX)) { // 进行排它型锁定
fwrite($fp, "Write something here\n");
flock($fp, LOCK_UN); // 释放锁定
} else {
echo "Couldn't lock the file !";
}
fclose($fp);
?>
注意:
由于 flock()
需要一个文件指针, 因此可能不得不用一个特殊的锁定文
件来保护打算通过写模式打开的文件的访问(
在 fopen()
函数中加入 "w"
或 "w+")。
注意:
flock()
不能用于 NFS 以及其它一些网络文件系统。详细资料查看自己操作系统的文
档。
在部分操作系统中 flock()
以进程级实现。当用一个多线程服务器 API(
比如 ISAPI)时,
可能不可以依靠 flock()
来保护文件,因为运行于同一服务器实例中其它并行线程的 PHP
脚本可以对该文件进行处理。
flock()
不支持旧的文件系统,如 FAT 以及它的派生系统。因此,此环境下总是返回
FALSE(
尤其是对 Windows)