今日の人気記事

まだデータがありません。

ファイルをロック - 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. ファイル名を変更 - ファイルを移動 - rename()
  2. ファイルから1行ずつ読み込む - fgets()
  3. パスからファイル名を取得 - basename()

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