今日の人気記事

  1. 変数を文字列型に変換 - strval関数

ファイルをロック - flock()

当ページのリンクには広告が含まれています。

プログラミング言語PHPで、開かれているファイルをロックする関数 flock()を紹介します。

他のプロセスがファイルを変更するのを防ぎます。複数のプロセスからファイルアクセスがある場合は、この関数を使って必ずファイルをロックしておきましょう。

flock関数

bool flock ( resource $handle , int $operation )
指定したファイルポインタのファイルをロックします。
引数
$handle
ロックするファイルのファイルポインタを指定します。
$operation
ロックモードを指定します。ロックモードについては後述します。
返り値
指定したロックモードへファイルを処理できれば trueを、失敗すれば falseを返します。

ロックモード

ファイルを開く際のモード一覧表です。モードの「概要」「ファイルポインタの位置」「ファイルがない場合」についての挙動を紹介しています。

ロックモード 概要
LOCK_SH 共有ロック。ほかのプロセスの読み取りは可、書き込みは不可。
LOCK_EX 排他ロック。読み取り/書き込みともに不可。
LOCK_UN ロック解放。ファイルロックを解放。
LOCK_NB ロック中にブロックしない。

サンプルコード

以下のテキストファイル(test.txt)を読み込んで、それらを出力するサンプルコードです。

flock ( ファイルポインタ, ロックモード )
<?php
// ファイルポインタをオープン
$handle = fopen("test.txt", "r");
// ファイルをロック
var_dump( flock($handle, LOCK_SH) );
// ファイルをアンロック
var_dump( flock($handle, LOCK_UN) );
// ファイルポインタをクローズ
fclose($handle);
?>

実行結果

サンプルコードの実行結果です。

bool(true)
bool(true)

ファイルロック、ファイルのアンロックともに成功しているので、trueが返されています。アンロックを実行しなくても、fcloseでロックは解除されます。

ファイル の人気記事

  1. ファイルの中身を配列に格納 - file()
  2. ファイルがディレクトリかどうかを確認 - is_dir()
  3. ファイルから1行ずつ読み込む - fgets()
  4. 文字列をファイルに書き込む - file_put_contents()
  5. PHP関数リファレンス

関連記事(一部広告含む)