flock
Home >> PHP関数リファレンス >> ファイルシステム関数 >> flock

flock

解説 ファイルをロックする
書式 bool flock( resource handle, int operation [, int wouldblock ] )
bool flock( resource ファイルポインタ, int ロックの種類 [, int ブロックモード ] )
引数 handle ファイルポインタ
operation ロックの種類
wouldblock ブロックモード
返値 TRUE(成功した時)/FALSE(失敗した時)

PHPマニュアル:flock flock()

flock()関数:概略解説

flock()は、指定したファイルをロックする関数です。

flock()関数:返り値解説

成功した場合にTRUE、失敗した場合はFALSEを返します。

flock()関数:引数解説

handle ファイルポインタ

ファイルポインタを指定します。

operation ロックの種類

ファイルロックの種類を指定します。これは「共有ロック」や「排他ロック」などの事です。指定できる値は以下の通りです。この値は現在では定数値でも数値でも指定可能ですが、PHP4.0.1以下のバージョンでは数値の方しか使えません。現在は定数値で指定している方が多いようです。

flock()関数でのロック指定方法
ロックの種類 定数値 数値 説明
共有ロック LOCK_SH 1 書き込みのみ禁止
排他ロック LOCK_EX 2 読み書き両方禁止
ロックの破棄 LOCK_UN 3 ロックを破棄する
ノンブロックモード LOCK_NB 4 ロック中、flock()関数でブロックモードとしない

ここで使えるロック用の定数はPHPに標準で組み込まれている定数です。つまりで自分で定義しなくてもいつでも(PHP4.0.1以降なら)使えます。

wouldblock ブロックモード

省略可能なオプション引数になってますが、ブロックモードにするかどうかというのを真偽値(TRUE/FALSE)で指定します。省略した場合はFALSEとみなされ、ブロックモードとしません。つまり、ブロックモードにしたい場合には第3引数にTRUEを指定する必要があります。

flock()関数:補足解説

ロックの破棄LOCK_UNは文字通りかけたロックを外しますが、実際にはfclose()の段階で自動的に行われます。通常、ロックはfclose()の寸前に書かれる(処理される)のが好ましいので、あまり明示的に書かれる事はありません。

flock()関数:注意

ファイル名ではなく、ファイルポインタを指定する事に注意して下さい。ファイルポインタはfopen()関数やfsockopen()関数で正常に開かれたファイルでなければいけません。

参考関数

  • fopen() ---- ファイルまたはURLを開く
  • fsockopen() ---- インターネットもしくはUNIXドメインのソケット接続を開始する
  • fclose() ---- ファイルポインタを閉じる

サンプルスクリプト

簡単な利用例

<?php
$fp
= fopen('somefile.txt',"r+");
flock($fp,LOCK_EX); // 排他ロック

// ここにその他のファイル書き込み処理

flock($fp,LOCK_UN); // ロック開放
fclose($fp);
?>