PHP flock()函数
定义和用法
flock()函数锁定或释放文件。若成功返回true,若失败返回false。
语法
flock(file, lock, block)
参数 | 描述 |
---|---|
file | 必需。规定要锁定或释放的已打开的文件 |
lock | 必需。规定要使用哪种锁定类型 |
block | 可选。若设置为1或true,则当进行锁定时阻挡其他进程 |
说明
flock()操作的file必须时一个已经打开的文件指针
lock参数可以是以下值之一:
- 要取得共享锁定(读取程序),将lock设为LOCK_SH
- 要取得独占锁定(写入程序),将lock设为LOCK_EX
- 要释放锁定(无论共享还是独占),将lock设为LOCK_UN
- 如果不希望flock()在锁定时堵塞,则给lock加上LOCK_NB(默认独占锁定是堵塞的)
由于flock需要一个文件指针,因此可能不得不用一个特殊的锁定文件来保护打算通过写模式打开的文件的访问(在fopen()函数中加入”w” 或 “w+”)。
例子
<?php
$file = fopen("test.txt", "w+");
if (flock($file, LOCK_EX)) {
fwrite($file, "hahahah");
flock($file, LOCK_UN);
} else {
echo "locking file!"
}
fclose($file);
?>