ホームページ >バックエンド開発 >PHPチュートリアル >swooleはホットスタートをサポートしています
いわゆるホットリスタートとは、サーバー関連のコードが変更されたときにサービスを停止する必要はなく、サーバーの実行中にファイルが更新されることを意味します。 Swoole は、組み込みのリロード関数と 2 つのカスタム セマフォを通じてこの関数を実装します。 まず、Swoole で利用できる 3 つのシグナル、SIGTERM、SIGUSR1、SIGUSR2 について説明します。 SIGTERM はサーバーを停止するために使用され、SIGUSR1 はすべての Worker プロセスを再起動するために使用され、SIGUSR2 はすべての Task Worker プロセスを再起動するために使用されます。 では、コード ファイルのホット アップデートを実装するにはどうすればよいでしょうか? Swoole のコールバック関数には onWorkerStart というコールバックがあり、このコールバックは Worker プロセスの開始時に呼び出されます。したがって、swoole_server が SIGUSR1 シグナルを受信し、すべての Worker プロセスを再起動すると、onWorkerStart が呼び出されます。 onWorkerStart ですべてのコード ファイルが必要な場合は、コード ファイルのホット アップデートを実現できるように、各 onWorkerStart の後に php ファイルが再度必要になります。 コードの実装を見てみましょう:
public function onStart( $serv ) { cli_set_process_title("reload_master");}public function onWorkerStart( $serv , $worker_id) { require_once "reload_page.php"; Test(); // reload_page.php中定义的一个函数}
まず、PHP の onStart コールバック関数の cli_set_process_title 関数を通じてプロセス名を設定します。 onWorkerStart では、関連する php ファイルが必要です。 次に、新しい reload.sh ファイルを作成し、次の内容を入力します:
echo "Reloading..."cmd=$(pidof reload_master)kill -USR1 "$cmd"echo "Reloaded"
このように、このスクリプトを実行することでサーバーを再起動できます。 完全なソースコードを表示するにはここをクリックしてください