swooleではメインプロセスにさまざまなシグナルを送ることができ、メインプロセスは受け取ったシグナルの種類に応じて異なる処理を実行します。
たとえば、次のようなものです (推奨学習: swoole ビデオ チュートリアル )
1、kill -SIGTERM|-15 master_pid 终止Swoole程序,一种优雅的终止信号,会待进程执行完当前程序之后中断,而不是直接干掉进程 2、kill -USR1|-10 master_pid 重启所有的Worker进程 3、kill -USR2|-12 master_pid 重启所有的Task Worker进程
USR1 シグナルがマスター プロセスに送信されると、マスター プロセスはシグナルは Manager プロセスを介して Worker プロセスに転送されます。このシグナルを受信した Worker プロセスは、実行中のロジックを処理した後にプロセス メモリを解放し、自身をシャットダウンして、Manager プロセスが新しい Worker を再起動します。プロセス。
新しいワーカー プロセスは新しいメモリ領域を占有します。
シナリオ:
オンライン プロジェクトの場合、ビジー状態のバックエンド サーバーがいつでもリクエストを処理しています。管理者がプロセスを強制終了してプロセスを終了/再起動すると、 it サーバー プログラムにより、コードが実行途中で終了する場合があります。
この場合、データの不整合が発生します。
たとえば、取引システムでは、支払いロジックの次のセクションは出荷であり、支払いロジックの後にプロセスが終了すると想定されます。これにより、ユーザーは通貨を支払うだけで商品が届かなくなり、非常に深刻な結果が生じます。
swoole はスムーズな再起動メカニズムを提供します。サーバーの再起動を完了するには、swoole_server のメイン プロセスに特定のシグナルを送信するだけです。
注:
1. 更新はワーカー プロセスのみに適用されます。ワーカー プロセスに含めるということは、マスター プロセスとマネージャーに更新コードを記述することを意味しますこれは有効ではないため、再起動は onWorkerStart コールバックの後にロードされたファイルに対してのみ意味を持ちます。
ワーカー プロセスが開始される前にメモリにロードされたファイル。これを再度有効にするには、サーバーを閉じて再起動する必要があります。
2. ワーカー コードに直接書かれたロジックは、シグナルが送信されても有効になりません。有効にするには、関連するビジネス ロジック コードを include 経由で導入する必要があります
以上がスウールを再起動する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。