ファイル ロック
このタイプのロックは比較的一般的です。たとえば、mysql と php-fpm が開始された後、プロセス ID を記録する pid ファイル。このファイルはファイル ロックです。
このロックにより、プロセスが繰り返し実行されるのを防ぐことができます。たとえば、crontab を使用する場合、1 つのタスクは 1 分ごとに実行されるように制限されていますが、このプロセスは 1 分以上実行される可能性があります。プロセス ロックが設定されていない場合は、競合を解決するために使用すると、2 つのプロセスが一緒になるため、実行に問題が発生します。
PID ファイル ロックを使用するもう 1 つの利点は、プロセスが停止信号または再起動信号をそれ自体に送信するのに便利であることです。たとえば、php-fpm を再起動するコマンドは次のとおりです:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
USR2 シグナルを pid ファイルに記録されたプロセスに送信します。シグナルはプロセス通信に属し、別の章で説明します。
ミューテックス ロックと読み取り/書き込みロック
同期モジュールのミューテックス:
ミューテックスは複合語であり、相互です。除外。 pecl を使用して同期モジュール、pecl install sync をインストールします。ドキュメントの SyncMutex には、lock と lock の 2 つのメソッドしかありません。
同期モジュールの読み取り/書き込みロック:
SyncReaderWriter のメソッドも同様で、読み取りロック、読み取りアンロック、書き込みロック、書き込みアンロックがペアで表示されます。
同期モジュールのイベント:
golang の Cond に似ており、wait() がブロックし、fire() が Event によってブロックされたプロセスを起動します。 Cond を紹介する良い記事があります。Cond はロックの固定された使用法であることがわかり、SyncEvent についても同様です。 PHP ドキュメントの例では、fire() メソッドが Web アプリケーションで使用されているようです。
同期モジュールのセマフォ:
SyncSemaphore ドキュメントには、セマフォと Mutex の違いは、セマフォが同時に複数のプロセス (またはスレッド) で使用できることであることが示されています。 time Get と Mutex は一度に 1 つずつしか取得できません。そのため、SyncSemaphore のコンストラクターには、セマフォを何プロセスで取得できるかを指定するパラメーターがあります。
推奨チュートリアル: PHP ビデオ チュートリアル
以上がPHPにはロックがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。