ファイルシステム関数
| 解説 | ファイルをロックする |
|---|---|
| 書式 | bool flock( resource handle, int operation [, int wouldblock ] ) |
bool flock( resource ファイルポインタ, int ロックの種類 [, int ブロックモード ] ) |
|
| 引数 |
handle
ファイルポインタ
|
operation
ロックの種類
|
|
wouldblock
ブロックモード
|
|
| 返値 | TRUE(成功した時)/FALSE(失敗した時) |
flock()は、指定したファイルをロックする関数です。
handle
ファイルポインタ
operation
ロックの種類
ファイルロックの種類を指定します。これは「共有ロック」や「排他ロック」などの事です。指定できる値は以下の通りです。この値は現在では定数値でも数値でも指定可能ですが、PHP4.0.1以下のバージョンでは数値の方しか使えません。現在は定数値で指定している方が多いようです。
| ロックの種類 | 定数値 | 数値 | 説明 |
|---|---|---|---|
| 共有ロック | LOCK_SH |
1 |
書き込みのみ禁止 |
| 排他ロック | LOCK_EX |
2 |
読み書き両方禁止 |
| ロックの破棄 | LOCK_UN |
3 |
ロックを破棄する |
| ノンブロックモード | LOCK_NB |
4 |
ロック中、flock()関数でブロックモードとしない |
ここで使えるロック用の定数はPHPに標準で組み込まれている定数です。つまりで自分で定義しなくてもいつでも(PHP4.0.1以降なら)使えます。
wouldblock
ブロックモード
fclose()の段階で自動的に行われます。通常、ロックはfclose()の寸前に書かれる(処理される)のが好ましいので、あまり明示的に書かれる事はありません。
fopen()関数やfsockopen()関数で正常に開かれたファイルでなければいけません。
参考関数
サンプルスクリプト
簡単な利用例
<?php
$fp = fopen('somefile.txt',"r+");
flock($fp,LOCK_EX); // 排他ロック
// ここにその他のファイル書き込み処理
flock($fp,LOCK_UN); // ロック開放
fclose($fp);
?>


