phpファイルのロック機構(gòu)
ファイル ロック メカニズムは、通常、単一のファイルが開かれている場合にはまったく効果がありません。學習のこの部分は少し抽象的です。
それを達成する方法を考えてみませんか?
効果が見えないのはなぜですか?
回答: コンピューターは基本的にミリ秒レベルで非常に高速に動作するためです。したがって、この実験は実際には何の効果もありません。
この章では、ファイル ロックの基本概念を理解し、ファイル ロック機能とロック メカニズムについて理解します。
ファイルロックの使用:
ある人がファイルを書き込んでいる場合、別の人もファイルを開いてファイルを書き込みます。
この場合、一定の確率で衝突が発生した場合、どちらの操作が優(yōu)先されるかはわかりません。
そこで今回はロック機構(gòu)を?qū)毪筏蓼埂?
ユーザー A がこのファイルの書き込みまたは読み取りを行う場合、ファイルを共有に追加します。私はそれを読むことができます、そして他の人も読むことができます。
でも、これをやると。排他ロックを使用します。このファイルは私のものです、私がファイルのロックを解除するまでは觸らないでください。
注: ファイルを追加した後は、ファイルのロックを解除するように注意してください。
この関數(shù)を見てみましょう:
bool flock ( resource $handle , int $operation)
関數(shù): 軽量の勧告ファイルロック
ロックの種類を見てみましょう:
Lock type | Description |
---|---|
LOCK_SH | 共有ロックを取得する (読み取りプログラム) |
LOCK_EX | 排他的ロックを取得する ( |
LOCK_UN | )ロックを解除します (共有または排他的) |
次に、demo.txt に排他的ロックを追加し、書き込み操作を?qū)g行します
<?php $fp = fopen("demo.txt", "r+"); // 進行排它型鎖定 if (flock($fp, LOCK_EX)) { fwrite($fp, "文件這個時候被我獨占了喲\n"); // 釋放鎖定 flock($fp, LOCK_UN); } else { echo "鎖失敗,可能有人在操作,這個時候不能將文件上鎖"; } fclose($fp); ?>
説明:
1 を書き込むために、ファイルに排他的ロックを追加しました。
2. 操作が完了し、書き込みが完了すると、排他ロックが解除されます。3. ファイルを読み込んでいる場合は、同じ処理の考え方に従って共有ロックを追加できます。