PHP flock() 関数

定義と使用法

flock() 関数はファイルをロックまたは解放します。

成功した場合、true を返します。失敗した場合、false を返します。

文法

flock(file,ロック,block)
パラメータ 説明
file 必須。ロックまたは解放する既にオープンしたファイルを指定します。
ロック 必須。使用するロックタイプを指定します。
block 選択可。1 または true に設定された場合、ロック時に他のプロセスをブロックします。

説明

flock() 操作の file すでにオープンされているファイルポインタでなければなりません。

ロック パラメータは以下のいずれかの値です:

  • 共有ロック(読み取りプログラム)を取得するには、 ロック LOCK_SH(PHP 4.0.1以前のバージョンでは 1)に設定します。
  • 独占ロック(書き込みプログラム)を取得するには、 ロック LOCK_EX(PHP 4.0.1以前のバージョンでは 2)に設定します。
  • ロックを解放する(共有または独占のいずれかでも可)には、 ロック LOCK_UN(PHP 4.0.1以前のバージョンでは 3)に設定します。
  • flock()がロック中にブロッキングを希望しない場合は、 ロック LOCK_NB(PHP 4.0.1以前のバージョンでは 4)を追加すると

ヒントおよびコメント

ヒント:以下のいずれかの方法で fclose() ロック操作を解放するために、コードの実行が完了した場合にも自動的に呼び出されます。

注釈:flock() はファイルポインタが必要であるため、ファイルを書き込みモードでオープンするためのアクセスを保護するために特別なロックファイルを使用する必要がある場合があります(fopen() 関数に "w" または "w+" を追加)。

<?php
$file = fopen("test.txt","w+");
// exclusive lock
if (flock($file,LOCK_EX))
  {
  fwrite($file,"Write something");
  // release lock
  flock($file,LOCK_UN);
  }
else
  {
  echo "Error locking file!";
  }
fclose($file);
?>