検索
ホームページPHPフレームワークSwooleスウールを再起動する方法

スウールを再起動する方法

Dec 10, 2019 pm 03:20 PM
swoole

スウールを再起動する方法

公式には、

$swoole->reload() または \swoole_process::kill( $ master_pid、SIGUSR1)、または直接 kill -USR1 master_pid など。

推奨学習: swoole ビデオ チュートリアル

簡単なテスト

swoole_http_server を開きます。ワーカー プロセスとタスカー プロセスの両方が1 次に、ブラウザは http リクエストを開始します。リクエストの内容は単純なスリープです。スリープ機能を通じて、このリクエストを処理しているワーカーが作業状態にあることを示し、その間にリロード操作を実行できる必要があります。睡眠期間。

初めて swoole サーバーに対してリクエストが開始されると、マネージャー プロセスはワーカーへのリクエストの処理をスケジュールします。その後、ワーカーの処理のスリープ期間中に別のリクエストが受信されると、ワーカー プロセスはまだ最初のリクエストの処理でビジー状態であるため、このリクエストは唯一のワーカー プロセスにスケジュールされます。これは簡単なテストで確認できます。

http リクエストは単純に以下にルーティングされます。 easyswoole フレームワークが使用されているため、php easyswoole reload all コマンドを実行すると、実際には kill -USR1 master_pid になります。

サーバー構成

$swoole_server->set([
    'worker_num' => 1,
    'task_worker_num' => 1,
    'reload_async' => true,
    'max

テストの開始

1. タスク ロジックはワーカー プロセスで記述されます

http メソッド

 public function test()
    {
        $start = microtime(true);
        echo '请求开始时间:' . $start . PHP_EOL;
        echo 'pid: ' . getmypid() . PHP_EOL;
        sleep(30);    # 这里睡眠脚本作测试
        echo 'finish sleep' . PHP_EOL;
        $end = microtime(true);
        echo '请求结束时间:' . $end . PHP_EOL;
        $this->writeJson(0, round(($end - $start), 3));
    }

Monitor onWorkerStart () メソッド

EventHelper::registerWithAdd(ServerManager::getInstance()->getMainEventRegister(),EventRegister::onWorkerStart,function (\swoole_server $server,$workerId){
     if(PHP_OS != 'Darwin'){
          $name = Config::getInstance()->getConf('SERVER_NAME');
           if( ($workerId getConf('MAIN_SERVER.SETTING.worker_num')) && $workerId >= 0){
                 $type = 'Worker';
              }else{
                 $type = 'TaskWorker';
              }
              cli_set_process_title("{$name}.{$type}.{$workerId}");
           }

          # 下面是打印测试的
          if ($type == 'Worker') {
              echo "这个是reload worker的时间:" . microtime(true) . "\n";
          }
          if ($type == 'TaskWorker') {
              echo "这个是reload TaskWorker的时间:" . microtime(true) . "\n";
          }
   });

テスト結果:

リクエスト開始時刻: 1566880257.9533 # ここで http インターフェイスがリクエストされています。これは test()

pid: 42108

This This is the time to reload TaskWorker: 1566880265.1501 # This is the time to run php easyswoole reload all. Tasker はアイドル状態でタスクがないため、すぐにリロードできます。

これはワーカーのリロード時間です: 1566880275.1524 # これはワーカーのリロード時間です。sleep(30) が test() にあり、max_wait_time を超えているため、最下層はワーカーのタスクを待機し続けません。古いワーカーは終了されましたが、「睡眠終了」は出力されず、新しいワーカーが作成されました。

# しかし、ワーカーの再作成に 10 秒かかるのはなぜでしょうか? Max_wait_time は 5 秒に設定されていますか? ?これは私には決して理解できなかったことです。

以上がスウールを再起動する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。