PHP flock() 函数
实例
锁定和释放文件:
<?php
$file = fopen("test.txt","w+");
// exclusive lock
if (flock($file,LOCK_EX)) {
fwrite($file,"Add some text to the file.");
fflush($file);
// release lock
flock($file,LOCK_UN);
} else {
echo "Error locking file!";
}
fclose($file);
?>
$file = fopen("test.txt","w+");
// exclusive lock
if (flock($file,LOCK_EX)) {
fwrite($file,"Add some text to the file.");
fflush($file);
// release lock
flock($file,LOCK_UN);
} else {
echo "Error locking file!";
}
fclose($file);
?>
定义和用法
flock() 函数锁定或释放文件。
若成功,则返回 true。若失败,则返回 false。
语法
flock(file, lock, block)
参数值
参数 | 描述 |
---|---|
file | 必需。规定要锁定或释放的已打开的文件。 |
lock | 必需。规定要使用哪种锁定类型。 可能的值:
|
block | 可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。 |
说明
flock() 操作的 file 必须是一个已经打开的文件指针。
lock 参数可以是以下值之一:
- 要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。
- 要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。
- 要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。
- 如果不希望 flock() 在锁定时堵塞,则给 lock 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)。
提示和注释
提示:可以通过 fclose() 来释放锁定操作,代码执行完毕时也会自动调用。
注释:由于 flock() 需要一个文件指针, 因此可能不得不用一个特殊的锁定文件来保护打算通过写模式打开的文件的访问(在 fopen() 函数中加入 "w" 或 "w+")。
技术细节
返回值: | 成功为 TRUE,失败为 FALSE |
---|---|
PHP 版本: | 4.0+ |
PHP 更新日志: | PHP 5.5: 在 Windows PHP 5.3 上添加了对 block 参数的支持:删除了 fclose() 上的自动解锁。 现在必须手动解锁 |