関数 flock
関数 flock は、ファイルのロックを設定または解除します。最初のパラメータは、fopen を通して取得したファイルポインタを受け取り、2番目のパラメータはロックタイプ(LOCK_SH、LOCK_EX、または LOCK_UN)、3番目のオプションパラメータは非ブロッキング操作のためのフラグです。
構文
flock(resource $handle, int $operation, int &$would_block = null): bool
例
排他的アクセス(書き込み)のためのファイルロック:
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX)) {
ftruncate($file, 0);
fwrite($file, "New data");
flock($file, LOCK_UN);
}
fclose($file);
?>
例
読み取りのための共有ロック:
<?php
$file = fopen("data.txt", "r");
if (flock($file, LOCK_SH)) {
$content = fread($file, filesize("data.txt"));
flock($file, LOCK_UN);
}
fclose($file);
echo $content;
?>
例
ロック取得の非ブロッキング試行:
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX | LOCK_NB, $would_block)) {
if ($would_block) {
echo "File is locked by another process";
} else {
fwrite($file, "Data");
flock($file, LOCK_UN);
}
}
fclose($file);
?>
関連項目
-
関数
fopen,
ファイルを開きます -
関数
fclose,
ファイルを閉じます -
関数
is_writable,
書き込み可能性をチェックします