ホームページ >バックエンド開発 >PHPの問題 >PHPファイル処理におけるファイルロックに関するQ&A

PHPファイル処理におけるファイルロックに関するQ&A

WBOY
WBOYオリジナル
2021-11-02 18:00:442292ブラウズ

前回の記事「PHPでディレクトリを削除する方法(具体例)」では、PHPでのディレクトリ削除に関する知識を詳しく紹介しましたが、空でないディレクトリの削除は少し複雑です。 。この記事では、PHP におけるファイルのロックに関する関連知識を紹介します。

PHPファイル処理におけるファイルロックに関するQ&A

これまでの記事では、ファイルの書き込み、ファイルの読み取りなど、ファイル処理関連の知識について多くのことを学びました。その 1 つは、 ファイル ロック と呼ばれます。ファイル ロックのメカニズムは一般にファイルを開くときには効果がないため、ファイル ロックの理解は少し抽象的になる可能性があります。

ファイル ロックとは正確には何ですか?彼は何に使われているのでしょうか?なぜファイルロックを使用するのでしょうか?どのように使用しますか?これらの質問を踏まえて、ファイル ロックに関する関連知識を見てみましょう。

ファイル ロックとは何ですか?

最初の質問は、簡単に言うと、ファイル ロックはファイル保護メカニズムです。このファイルを読み書きしているときには、すでにファイルが存在していることがわかります。ファイルを操作するときのファイルのメカニズム。たとえば、ファイルの操作中に別の操作が行われないようにします。

ファイル ロックの目的

ファイルにファイル ロックがある場合、このファイルを使用すると、自分だけがファイルにアクセスできます。ファイルのロックが解除されない限り、他の人は私のファイルの操作を妨げることはできません。データエラーを防ぐため、同時に操作できるのは 1 人だけです。

ファイルロックがない場合、複数の人が同じファイルを操作する場合、データエラーや非対称性が発生する可能性が高いため、ファイルロックを使用する必要があります。これがファイルの使用目的であり、ファイル ロックが使用される理由です。

ファイル ロックの使用方法: flock()Function

次に、これの使用方法を見てみましょう。 PHP ファイルのロックについては、まず、ファイルを開いた後に flock() 関数を通じてファイルをロックできることを知る必要があります。

flock()関数の基本的な構文形式は次のとおりです:

flock(resource $handle, int $operation[, int &$wouldblock])

注意すべき点は次のとおりです:

Parameter$handle は、fopen() を通じて作成されたファイル リソースであるファイル システムのポインタを表し、パラメータ $operation はファイルのロック タイプを表します。パラメータ $wouldblock はオプションのパラメータであり、1 または true に設定できることを意味します。ロックされている場合はブロックします。他のプロセスをブロックします。

パラメータ $operation のタイプを紹介します。

  • LOCK_EX は書き込みロックを表します。 、書き込み中は書き込みロック状態になっており、他の人は書き込みも読み取りもできません。ロックを解除した後でのみ復元できます。

  • LOCK_SH は共有ロックを表し、他のユーザーは読み取りのみ可能で書き込みはできないことがわかります。ロック解除後に返信してください。

  • #LOCK_UN は、上記 2 つの状態の解放を表します。つまり、ロックが解除されています。

  • LOCK_NB は、ファイルがロックされている場合、読み取りまたは書き込み後、すぐに通知アクセスが返されることを意味します。ファイルはロックされています。

次に例を見てみましょう。例は次のとおりです:


<?php
header("Content-Type: text/html;charset=utf-8");    //设置字符编码
$file = "test.txt";
$handle = fopen($file,&#39;w+&#39;); //打开文件
if(flock($handle, LOCK_EX|LOCK_NB)){  //给文件上锁
    fwrite($handle, &#39;被锁住了&#39;);  //写入数据
    flock($handle, LOCK_UN);  //释放文件锁
}else{
    echo "锁失败了";
}
fclose($handle);//关闭文件
readfile($file);//读取文件内容
?>

出力結果:

PHPファイル処理におけるファイルロックに関するQ&A# データは ##test.txt に書き込まれます:

PHPファイル処理におけるファイルロックに関するQ&A#上記の例では、ファイルに対するファイル ロック操作が完了しました。 、 fclose() 関数を使用してファイルを閉じ、次に readfile() 関数を通じてファイルの内容を読み取ります。注意する必要があるのは:

flock() 関数を使用すると、ファイルはロックされますが、ファイルのロックを自動的に解除したい場合は、fclose() 関数を呼び出すだけです。コードを記述するときは、ファイル ロックを使用した後に、unlock ステートメントを追加することをお勧めします。

ご興味がございましたら、「

PHP ビデオ チュートリアル

」をクリックして、PHP の知識をさらにご覧ください。

以上がPHPファイル処理におけるファイルロックに関するQ&Aの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。