PHP flock() 函数用法及示例

    PHP Filesystem 参考手册

flock()函数可以锁定或释放文件,成功时返回true,失败时返回false。

语法

bool flock ( resource $handle , int $operation [, int &$wouldblock ] )

flock()函数允许我们执行简单的读取器/写入器模型,该模型几乎可以在所有平台上使用。

注释和提示

注释:这些锁仅在当前的 PHP 进程中使用。如果权限允许,其他的进程可修改或删除一个 PHP-locked 文件。
注释:flock() 在 Windows 下具有强制性。
提示:可以通过 fclose() 来释放锁定操作,脚本执行完成时会自动调用。

参数

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

可能的值:

  • LOCK_SH - 共享锁定(读取的程序)。允许其他进程访问该文件。

  • LOCK_EX - 独占锁(写入的程序)。防止其他进程访问该文件。

  • LOCK_UN - 释放一个共享锁定或独占锁定

  • LOCK_NB - 锁定的情况下避免阻塞其他进程。

    这些锁仅在当前的PHP进程中使用,并且如果权限允许,其他进程可以修改或删除PHP锁定的文件。在Windows中,此函数是必需的。我们可以使用fclose()函数来释放锁定操作,当脚本执行完成时可以自动调用该锁定操作。

wouldblock
可选。若设置为 1,则当进行锁定时阻塞其他进程。

在线示例

fclock的独占锁LOCK_EX的使用示例:

<?php
   $file = fopen("/PhpProject/sample.txt", "w+");

   //独占锁
   if(flock($file, LOCK_EX)) {
      fwrite($file, "flock function");
      
       // 释放锁
      flock($file, LOCK_UN);
      echo $file;
   } else {
      echo "锁定文件时出错!";
   }
   fclose($file);
?>

PHP Filesystem 参考手册