flock()

创建于 2024-12-03 / 50
字体: [默认] [大] [更大]
❮ PHP 文件系统参考手册

实例

锁定和释放文件:

<?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);
?>

定义和用法

flock() 函数锁定或释放文件。

若成功,则返回 true。若失败,则返回 false。

语法

flock(file, lock, block)

参数值

参数 描述
file 必需。规定要锁定或释放的已打开的文件。
lock 必需。规定要使用哪种锁定类型。

可能的值:

  • LOCK_SH - 共享锁(读取器)。 允许其他进程访问该文件
  • LOCK_EX - 排他锁(写入器)。 阻止其他进程访问该文件
  • LOCK_UN - 释放锁
  • LOCK_NB - 锁定时避免阻塞其他进程
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() 上的自动解锁。 现在必须手动解锁

❮ PHP 文件系统参考手册
0 人点赞过