【PHP8.x】LOCK_SH定数の使い方
LOCK_SH定数の使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
LOCK_SH定数は、PHPのflock()関数で使用されるファイルロックの種類の一つである「共有ロック(Shared Lock)」を表す定数です。
この定数は、ファイルに対して複数のプロセスが同時に読み取りアクセスを行うことを許可しつつ、書き込みアクセスをブロックしたい場合に利用されます。具体的には、あるプロセスがLOCK_SHを指定してファイルをロックすると、他のプロセスも同じLOCK_SHを指定することでそのファイルを読み取ることができます。これにより、複数のプロセスが同時に安全にファイルの内容を参照できるようになります。
一方で、もし別のプロセスがそのファイルに対してLOCK_EX(排他ロック)を指定して書き込みを行おうとした場合、LOCK_SHによる共有ロックが解除されるまでその書き込み処理は待機状態となります。この仕組みによって、ファイルの内容が複数のプロセスから同時に読み取られている最中に、他のプロセスによる書き込みによってデータが破壊されたり、不整合な状態になったりするのを防ぎます。
主に、設定ファイルやログファイルなど、複数のプロセスが頻繁に参照するが、更新頻度が比較的低いファイルの読み込み時に、データの整合性と安全性を確保するために使用されます。ファイルシステムレベルでの排他制御を実現する重要な要素です。
構文(syntax)
1<?php 2$file_handle = fopen("path/to/your/file.txt", "r"); 3if ($file_handle) { 4 flock($file_handle, LOCK_SH); 5 // ファイルへの共有ロックが成功しました 6 // ロックされたファイルに対する読み込み処理など... 7 fclose($file_handle); 8} 9?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
int
LOCK_SH は、ファイルロックの種類を指定するための定数です。共有ロックを表し、複数のプロセスが同時にファイルを読み込むことを許可しますが、書き込みはブロックします。