ホームページ  >  記事  >  バックエンド開発  >  [PHP]swoole_serverの複数プロセスの分業、swoole_serverの分業_PHPチュートリアル

[PHP]swoole_serverの複数プロセスの分業、swoole_serverの分業_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:44:43984ブラウズ

[PHP]swoole_server几个进程的分工,swoole_server分工

readme.md—/Users/zjh/Documents/我的文章/[PHP]swoole_server几个進行の分工

[PHP]swoole_serverプロセスの分業

要約: Swoole は、PHP 言語の高性能ネットワーク通信フレームワークであり、PHP 言語の非同期マルチスレッド サーバー、非同期 TCP/UDP ネットワーク クライアント、非同期 MySQL、データベース接続プール、AsyncTask、メッセージ キュー、ミリ秒タイマー、非同期を提供します。ファイルの読み取りと書き込み、非同期 DNS クエリ。強力な機能は、明確な分業を伴う複数のプロセスによって実現されます。ここでは、初心者が Swoole フレームワークをより早く理解できるように、いくつかのプロセスの分業について詳しく紹介します。


  • ブログ: http://www.cnblogs.com/jhzhu
  • メール: jhzhuustc@gmail.com
  • 著者: Zhi Ming So
  • 時間: 2015-08-17

目次

  • [PHP]swoole_serverプロセスの分業
    • 目次
    • スウールの紹介
      • Swoole: PHP の再定義
      • 関数表示コードスニペット
        • TCPサーバー
        • TCPクライアント
    • メインプロセス分析
      • マスタープロセス
      • マネージャープロセス
      • ワーカープロセス
      • タスクプロセス
    • プロセスとイベントコールバックの対応
      • マスタープロセスのコールバック関数
      • ワーカープロセスのコールバック関数
      • タスクプロセス内のコールバック関数
      • マネージャープロセス内のコールバック関数

スウールの紹介

Swoole公式サイト

Swoole: PHP の再定義

Swoole: PHP 言語の高性能ネットワーク通信フレームワーク。PHP 言語の非同期マルチスレッド サーバー、非同期 TCP/UDP ネットワーク クライアント、非同期 MySQL、データベース接続プール、AsyncTask、メッセージ キュー、ミリ秒タイマー、非同期ファイル読み取りを提供します。非同期 DNS クエリを作成します。 Swoole は標準的な PHP 拡張機能ですが、実は通常の拡張機能とは異なります。通常の拡張機能はライブラリ関数を提供するだけです。 swoole 拡張機能は PHP の制御を引き継ぎ、実行後にイベント ループに入ります。 IO イベントが発生すると、swoole は指定された PHP 関数を自動的にコールバックします。

関数表示コードスニペット

TCPサーバー

リーリー

TCPクライアント

リーリー

その他のコード スニペットについては、swoole 公式 Web サイトをご覧ください。

メインプロセス分析

マスタープロセス

マスタープロセスは主に、Swooleフレームワークメカニズムの動作を保証するために使用されます。いくつかの機能スレッドが作成されます:

  • リアクター スレッド: 実際に TCP 接続を処理し、データを送受信するスレッドです。新しい接続を受け入れた後、swoole のメイン スレッドはその接続を固定 Reactor スレッドに割り当て、このスレッドがソケットの監視を担当します。ソケットが読み取り可能なときにデータを読み取り、プロトコル分析を実行して、リクエストをワーカー プロセスに配信します。ソケットが書き込み可能なときに、TCP クライアントにデータを送信します。
  • マスター スレッド (メイン スレッド): 新しい接続の受け入れ、UNIX PROXI 信号処理、およびタイマー タスクを担当します。
  • ハートビートパケット検出スレッド:(省略)
  • UDPパケット受信スレッド:(省略)

マネージャープロセス

swoole のワーカー/タスク プロセスはすべてフォークされ、マネージャー プロセスによって管理されます。

  • 子プロセスが終了すると、マネージャー プロセスは、ゾンビ プロセスになるのを避けるために子プロセスをリサイクルする責任があります。そして新しい子プロセスを作成します
  • サーバーがシャットダウンされると、マネージャープロセスはすべての子プロセスにシグナルを送信し、子プロセスにサービスをシャットダウンするように通知します
  • サーバーがリロードされると、マネージャープロセスは子プロセスを1つずつシャットダウン/再起動します
リーリー

ワーカープロセス

  • Reactor スレッドによって配信されたリクエスト パケットを受け入れ、PHP コールバック関数を実行してデータを処理します
  • 応答データを生成して Reactor スレッドに送信し、Reactor スレッドが TCP クライアントに送信します
  • 非同期ノンブロッキングモードまたは同期ブロッキングモードにすることができます
  • ワーカーはマルチプロセスモードで実行されます
リーリー

タスクプロセス

  • swoole_server->task/taskwait メソッドを通じてワーカープロセスによって配信されたタスクを受け入れます
  • タスクを処理し、結果データをワーカープロセスに返します
  • 完全同期ブロッキングモード
  • タスクはマルチプロセスモードで実行されます

タスクプロセスの正式名はtask_workerプロセスで、特殊なワーカープロセスです。したがって、onWorkerStart在task进程中也会被调用。当$worker_id >= $serv->setting['worker_num']の場合はこのプロセスがtask_workerであることを意味し、それ以外の場合はこのプロセスがワーカープロセスであることを意味します。

プロセスとイベントコールバックの対応

マスタープロセスのコールバック関数

リーリー

ワーカープロセスのコールバック関数

リーリー

タスクプロセス内のコールバック関数

リーリー

マネージャープロセス内のコールバック関数

リーリー

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1048730.html技術記事 [PHP]swoole_server の複数のプロセス間の分業,swoole_server の分業 readme.md—/Users/zjh/Documents/My Articles/[PHP]swoole_server の複数のプロセス間の分業[PHP]複数のプロセス間の分業swoole_server のプロセス...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。