私は PHP で群れのメカニズムを勉強していますが、LOCK_SH モードの機能を理解するのに苦労しています。他のスクリプトが書き込みできないようにファイルをロックしているサイトを読みましたが、読み取りは可能です。ただし、次のコードは期待どおりに機能していないようです:
$fp = fopen('my_file.txt','r');
flock($fp, LOCK_SH);
sleep(20);
flock($fp, LOCK_UN);
そしてfile2.phpに私は持っています
$fp = fopen('my_file.txt','a');
fwrite($fp,'test');
ファイルを 20 秒間ロックする最初のスクリプトを実行します。ロックが設定された状態で file2.php を実行すると、すぐに実行が終了します。その後、「my_file.txt」を開くと、文字列「test」が追加されました (「file1.php」はまだ実行されていました)。「file2.php」を変更して、ロックされたファイルから読み取り、問題なく赤くなるようにします。どうやら...「LOCK_SH」の縫い目はまったく何もしません。ただし、LOCK_EX yes を使用すると、ファイルがロックされ、スクリプトはファイルから読み書きできなくなります。Easy PHP を使用しており、Windows 7 で実行しています。