background image

 

  来看看 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)