ホームページ >バックエンド開発 >PHPチュートリアル >swooleはホットスタートをサポートしています

swooleはホットスタートをサポートしています

WBOY
WBOYオリジナル
2016-06-23 13:20:032119ブラウズ

いわゆるホットリスタートとは、サーバー関連のコードが変更されたときにサービスを停止する必要はなく、サーバーの実行中にファイルが更新されることを意味します。 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"

このように、このスクリプトを実行することでサーバーを再起動できます。 完全なソースコードを表示するにはここをクリックしてください

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