PHP-FPMとSwooleの比較

Jan 20, 2020 pm 01:15 PM
php-fpm

数日前に swoole に関する記事をいくつか見たので、今日はその楽しみに参加するためにここに来ました。私のレベルには限界があり、細部の理解が進んでいない可能性がありますので、追加や修正にご協力ください。

PHP-FPM

PHP の初期バージョンには組み込みの WEB サーバーはありませんでしたが、サードパーティ接続用の SAPI (サーバー API) が提供されていました。現在非常に人気のある php-fpm は、FastCGI プロトコルを介して PHP とサードパーティの WEB サーバー間の通信を処理します。たとえば、この方法で実行される Nginx php-fpm、fpm の組み合わせはマスター/ワーカー モードであり、マスター プロセスを開始して Nginx からのリクエストを監視し、次に複数のワーカー プロセスをフォークしてリクエストを処理します。各ワーカー プロセスは 1 つのリクエストのみを処理できます。単一プロセスのライフ サイクルはおおよそ次のとおりです:

1. 初期化モジュール。

2. 初期化リクエスト。ここでのリクエストは、HTTP リクエストではなく、PHP にコードの実行をリクエストすることを意味します。

3. PHP スクリプトを実行します。

4. リクエストを終了します。

5. モジュールを閉じます。

マルチプロセス モデルは、同時実行性の問題を解決するためにプロセスの数に依存しています。1 つのプロセスで処理できる接続は 1 つだけです。多数のプロセスが開始されると、プロセス スケジューリングの消費量が数十、場合によっては 100% を占める場合があります。 C10K問題などCPUの性能が劣る場合、マルチプロセスモデルでは不十分です。

Swoole

Swoole もマスター/ワーカー モードを採用しています。違いは、マスター プロセスに複数の Reactor スレッドがあることです。マスターは単なるイベント ジェネレーターであり、ソケットハンドルの監視、イベントの変更。 Worker はマルチプロセス方式で実行され、Reactor スレッドからリクエストを受け取り、コールバック関数 (PHP で記述された) を実行します。 Master プロセスを開始するプロセスは大まかに次のとおりです:

1. モジュールを初期化します。

2. 初期化リクエスト。 swoole は cli を通じて実行する必要があるため、$_SERVER、$_POST、$_GET などの PHP のグローバル変数はリクエストの初期化時に初期化されません。

3. PHP スクリプトを実行します。字句解析や構文解析、変数、関数、クラスなどの初期化を含め、マスターはリスニング状態に入り、プロセスは終了しません。

Swoole アクセラレーションの原理

● Reactor (epoll の IO 再利用メソッド) は、同時実行性が高い問題を解決するために、ソケット ハンドルのイベント変更を監視する役割を果たします。

# メモリ常駐による PHP コードの初期化の時間を節約する かさばるフレームワークを使用する場合、swoole を使用することによる高速化効果は非常に明白です。

違いを比較

PHP-FPM

● マスター メイン プロセス / ワーカー マルチプロセス モード。

# マスターを起動し、FastCGI プロトコルを通じて Nginx から送信されたリクエストをリッスンします。

# 各ワーカー プロセスは、完全な PHP コードを実行するために使用される 1 つの接続のみに対応します。

# PHP コードが実行されると、占有されていたすべてのメモリが破棄され、次のリクエストでは再初期化やその他の面倒な操作が必要になります。

# HTTP サーバーのみ。

Swoole

● マスター メイン プロセス (複数の Reactor スレッドで構成される)/ワーカー マルチプロセス (またはマルチスレッド) モード

● 開始Master は PHP コードを初期化し、Reactor はソケット ハンドルのイベント変更を監視します。

# Reactor のメイン スレッドはマルチスレッドのバランスを担当し、Manager プロセスは TaskWorker プロセスを含む複数の Worker プロセスを管理します。

# 各ワーカーは Reactor からのリクエストを受け入れ、コールバック関数部分の PHP コードを実行するだけで済みます。

# PHP 初期化コードは、マスターの起動時に 1 回だけ実行され、マスターはリスニング状態になり、プロセスは終了しません。

# HTTP Server だけでなく、TCP 接続や WebSocket 接続も確立できます。

上記は主にコア動作マシンの比較です。相違点は、とりあえず思いついた点だけを記載しています。抜けている点があれば、遠慮なく追加してください~

以上がPHP-FPMとSwooleの比較の詳細内容です。詳細については、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

php-fpm を使用して高パフォーマンスのチューニングを行う方法 php-fpm を使用して高パフォーマンスのチューニングを行う方法 Jul 08, 2023 am 11:30 AM

php-fpm を使用して高パフォーマンスのチューニングを行う方法 PHP は、Web アプリケーションや動的 Web サイトの開発に広く使用されている、非常に人気のあるサーバーサイド スクリプト言語です。ただし、トラフィックが増加すると、PHP アプリケーションのパフォーマンスが低下する可能性があります。この問題を解決するには、php-fpm (FastCGIProcessManager) を使用して高性能チューニングを行うことができます。この記事では、php-fpm を使用して PHP アプリケーションのパフォーマンスを向上させる方法とコード例を紹介します。 1つ、

PHP-FPM 最適化を使用して PrestaShop アプリケーションのパフォーマンスを向上させる方法 PHP-FPM 最適化を使用して PrestaShop アプリケーションのパフォーマンスを向上させる方法 Oct 05, 2023 pm 12:33 PM

PHP-FPM 最適化を使用して PrestaShop アプリケーションのパフォーマンスを向上させる方法 電子商取引業界の急速な発展に伴い、PrestaShop は多くの販売者に選ばれる電子商取引プラットフォームになりました。ただし、ストアのサイズが大きくなり、訪問数が増加すると、PrestaShop アプリケーションはパフォーマンスのボトルネックに遭遇する可能性があります。 PrestaShop アプリケーションのパフォーマンスを向上させるための一般的な方法は、PHP-FPM を使用してアプリケーションの処理能力を最適化および向上させることです。 PHP-FPM (高速CGI)

PHP-FPM 最適化を使用して WooCommerce アプリケーションのパフォーマンスを向上させる方法 PHP-FPM 最適化を使用して WooCommerce アプリケーションのパフォーマンスを向上させる方法 Oct 05, 2023 am 08:24 AM

PHP-FPM 最適化を使用して WooCommerce アプリケーションのパフォーマンスを向上させる方法 概要 WooCommerce は、WordPress Web サイトでオンライン ストアを作成および管理するための非常に人気のある e コマース プラグインです。ただし、ストアが成長し、トラフィックが増加すると、WooCommerce アプリが遅くなり、不安定になる可能性があります。この問題を解決するには、PHP-FPM を使用して、WooCommerce アプリケーションのパフォーマンスを最適化および向上させることができます。 PHP-FPとは

php-fpm 接続プールを使用してデータベース アクセスのパフォーマンスを向上させる php-fpm 接続プールを使用してデータベース アクセスのパフォーマンスを向上させる Jul 07, 2023 am 09:24 AM

データベース アクセスのパフォーマンスを向上させるための php-fpm 接続プールの使用の概要: Web 開発において、データベース アクセスは最も頻繁で時間のかかる操作の 1 つです。従来の方法では、データベース操作ごとに新しいデータベース接続を作成し、使用後に接続を閉じます。この方法では、データベース接続の確立と終了が頻繁に発生し、システムのオーバーヘッドが増加します。この問題を解決するには、php-fpm 接続プール テクノロジを使用してデータベース アクセスのパフォーマンスを向上させることができます。接続プールの原理: 接続プールは、一定数のデータベースを組み合わせたキャッシュ技術です。

php-fpmのチューニング方法を詳しく解説 php-fpmのチューニング方法を詳しく解説 Jul 08, 2023 pm 04:31 PM

PHP-FPM は、PHP のパフォーマンスと安定性を向上させるために一般的に使用される PHP プロセス マネージャーです。ただし、高負荷環境では、PHP-FPM のデフォルト設定ではニーズを満たせない場合があるため、チューニングが必要です。この記事では、PHP-FPM のチューニング方法を詳しく紹介し、いくつかのコード例を示します。 1. プロセスの数を増やす デフォルトでは、PHP-FPM はリクエストを処理するために少数のプロセスのみを開始します。高負荷環境では、プロセス数を増やすことで PHP-FPM の同時実行性を高めることができます。

PHP-FPM 最適化を使用して Phalcon アプリケーションのパフォーマンスを向上させる方法 PHP-FPM 最適化を使用して Phalcon アプリケーションのパフォーマンスを向上させる方法 Oct 05, 2023 pm 01:54 PM

PHP-FPM 最適化を使用して Phalcon アプリケーションのパフォーマンスを向上させる方法 はじめに: Phalcon は高性能 PHP フレームワークであり、PHP-FPM と組み合わせるとアプリケーションのパフォーマンスをさらに向上させることができます。この記事では、PHP-FPM を使用して Phalcon アプリケーションのパフォーマンスを最適化する方法を紹介し、具体的なコード例を示します。 1. PHP-FPMPとはHP-FPM (PHPFastCGIProcessManager) はWebサーバーから独立したPHPプロセスです

ubuntuにphp-fpmがない場合の対処法 ubuntuにphp-fpmがない場合の対処法 Feb 03, 2023 am 10:51 AM

php-fpm を使用しない Ubuntu の解決策: 1. 「sudo apt-get」コマンドを実行して PHP のソース アドレスを追加します; 2. php7 パッケージがあるかどうかを確認します; 3. 「sudo apt-get install」を実行して PHP をインストールします" コマンド; 4. nginx リクエストを処理するためにポート 9000 でリッスンするように設定を変更します。 5. 「sudo service php7.2-fpm start」を通じて「php7.2-fpm」を起動します。

php-fpmとは何ですか?パフォーマンスを向上させるために最適化するにはどうすればよいですか? php-fpmとは何ですか?パフォーマンスを向上させるために最適化するにはどうすればよいですか? May 13, 2022 pm 07:56 PM

php-fpmとは何ですか?次の記事では、php-fpm について理解し、php-fpm を最適化する際に何を最適化する必要があるかを紹介します。

See all articles