PHP 文件操作的 flock() 内置函数用法

PHP flock() 函数

定义和用法:flock() 函数锁定或释放文件。

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


语法:

flock(file,lock,block)

参数             描述

file             必需。规定要锁定或释放的已打开的文件。

lock             必需。规定要使用哪种锁定类型。            

block     可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。


说明

flock() 操作的 file 必须是一个已经打开的文件指针。例如: $file=fopen('test.txt','r+');


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)。


注意:flock()函数无法再NFS或其他网络文件系统中使用。它还无法再其他更早的不支持文件锁定的文件系统中使用,比如FAT 。


提示和应用场景:

提示:可以通过 fclose() 来释放锁定操作,代码执行完毕时也会自动调用。

应用场景:由于 flock( ) 需要一个文件指针, 因此可能不得不用一个特殊的锁定文件来保护打算通过写模式打开的文件的访问(在 fopen() 函数中加入 "w" 或 "w+")。


例子:

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

// 排它性的锁定
if (flock($file,LOCK_EX))
  {
  fwrite($file,"Write something string");
  // release lock
  flock($file,LOCK_UN);
  }
else
  {
  echo "Error locking file!";
  }

fclose($file);
?>


你可能感兴趣的:(PHP,函数,文件操作,文件锁定,flock,fclose,fwrite)