flock
解説 | ファイルをロックする |
---|---|
書式 | bool flock( resource handle , int operation [, int wouldblock ] ) |
bool flock( resource ファイルポインタ , int ロックの種類 [, int ブロックモード ] ) |
|
引数 |
handle
ファイルポインタ
|
operation
ロックの種類
|
|
wouldblock
ブロックモード
|
|
返値 | TRUE(成功した時)/FALSE(失敗した時) |
flock()は指定したファイルをロックする関数です。
成功した場合にTRUE、失敗した場合はFALSEを返します。
handle
ファイルポインタファイルポインタを指定します。
operation
ロックの種類ファイルロックの種類を指定します。これは「共有ロック」や「排他ロック」などの事です。指定できる値は以下の通りです。この値は現在では定数値でも数値でも指定可能ですが、PHP4.0.1以下のバージョンでは数値の方しか使えません。現在は定数値で指定している方が多いようです。
ロックの種類 | 定数値 | 数値 | 説明 |
---|---|---|---|
共有ロック | LOCK_SH |
1 |
書き込みのみ禁止 |
排他ロック | LOCK_EX |
2 |
読み書き両方禁止 |
ロックの破棄 | LOCK_UN |
3 |
ロックを破棄する |
ノンブロックモード | LOCK_NB |
4 |
ロック中、flock() 関数でブロックモードとしない |
ここで使えるロック用の定数はPHPに標準で組み込まれている定数です。つまりdefine()で自分で定義しなくてもいつでも(PHP4.0.1以降なら)使えます。
wouldblock
ブロックモード省略可能なオプション引数になってますが、ブロックモードにするかどうかというのを真偽値(TRUE/FALSE)で指定します。省略した場合はFALSEとみなされ、ブロックモードとしません。つまり、ブロックモードにしたい場合には第3引数にTRUEを指定する必要があります。
ロックの破棄LOCK_UNは文字通りかけたロックを外しますが、実際にはfclose()の段階で自動的に行われます。通常、ロックはfclose()の寸前に書かれる(処理される)のが好ましいので、あまり明示的に書かれる事はありません。
参考関数
サンプルスクリプト
簡単な利用例
- $fp = fopen('somefile.txt',"r+");
- flock($fp,LOCK_EX); // 排他ロック
- // ここにその他のファイル書き込み処理
- flock($fp,LOCK_UN); // ロック開放
- fclose($fp);
PHP辞典![]() |
|
---|---|
![]() |
PHP5の関数にも対応したリファレンスですが、関数ごとにバージョンが表示されているのでPHP4ユーザにも安心。簡単なサンプルが全ての関数についている事と目的別検索が魅力です。 |
PHPポケットリファレンス![]() |
|
---|---|
![]() |
携帯用でもOKの小さめの本。関数本にありがちな分厚い・重い・見るのがおっくうという欠点をコンパクト化で解消してます。小さいながらも関数の掲載量・内容は共に十分充実しており、関数ごとのサンプルや目的別検索もあります。 |