phpファイルのロック機構

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

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

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

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

ファイルロックの使用:

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

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

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

bool flock ( resource $handle , int $operation)

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

ロックの種類を見てみましょう:

Lock type Description
LOCK_SH 共有ロックを取得する (読み取りプログラム)
LOCK_EX 排他的ロックを取得する (
LOCK_UN)ロックを解除します (共有または排他的)

次に、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); ?>
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜