ファイルロック機構

ファイル ロック メカニズム

ファイル ロック メカニズムは、通常、単一のファイルが開かれている場合にはまったく効果がありません。学習のこの部分は少し抽象的です。

それを達成する方法を考えてみませんか?

効果が見えないのはなぜですか?
回答: コンピューターは基本的にミリ秒レベルで非常に高速に動作するためです。したがって、この実験は実際には何の効果もありません。

この章では、ファイル ロックの基本概念を理解し、ファイル ロック機能とロック メカニズムについて理解します。

ファイルロックの使用:

ある人がファイルを書き込んでいる場合、別の人もそのファイルを開いてファイルを書き込みます。
この場合、一定の確率で衝突が発生した場合、どちらの操作が優先されるかはわかりません。
そこで今回はロック機構を導入します。
ユーザー A がこのファイルの書き込みまたは読み取りを行う場合、ファイルを共有に追加します。私はそれを読むことができます、そして他の人も読むことができます。
ただし、これが事実である場合。排他ロックを使用します。このファイルは私のものです、私がファイルのロックを解除するまでは触らないでください。

注: ファイルを追加した後は、ファイルのロックを解除するように注意してください。

この関数を見てみましょう:

bool flock ( resource $handle , int $operation)

関数: 軽量の勧告ファイル ロック

ロック タイプを見てみましょう:


QQ截图20161009111405.png


次に、demo.txt に排他ロックを追加し、書き込み操作を実行します。

<?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. ファイルを読んでいる場合は、同じ処理の考え方に従って共有ロックを追加できます。


学び続ける
||
<?php $fp = fopen("demo.txt", "r+"); // 进行排它型锁定 if (flock($fp, LOCK_EX)) { fwrite($fp, "文件这个时候被我独占了哟\n"); // 释放锁定 flock($fp, LOCK_UN); } else { echo "锁失败,可能有人在操作,这个时候不能将文件上锁"; } fclose($fp); ?>
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜