同期プログラミングと非同期プログラミングの違い
非同期 PHP の利点について説明する前に、同期プログラミング モデルを簡単に確認しましょう。そして非同期プログラミングモデル。同期コードは 1 行ずつ順番に実行されます。
別のタスクを開始する前に、前のタスクを完了する必要があります。非同期コードでは、複数のタスクを同時に完了できるため、アプリケーションのパフォーマンスとユーザー エクスペリエンスが大幅に向上します。
#関連コースの推奨事項: 「PHP プログラミングの入門から習得まで 」
##同期 PHP とは何ですか?
同期 PHP は、同期モデルを使用して記述された PHP コードを指します。 PHP はもともと同期開発をサポートするために作成されたため、ほとんどの PHP 開発者はこの言語で同期コードを記述することに慣れています。 Apache または Nginx を使用して Apache の mod_php または php-fpm を使用してプリフォークします。
PHP の基本的なチュートリアルをお探しですか?このブログ「
PHP 開発の基礎: PHP とは何か、なぜこれほど人気があるのか、PHP の利点は何ですか?」を参照してください。 。
非同期 PHP とは何ですか?
非同期 PHP は、非同期モデルを使用して記述された PHP コードを指します。 Swoole などの拡張機能、または ReactPHP などの PHP フレームワークを使用すると、イベント ループを使用して PHP がリクエストと応答を非同期に受け入れることができます。
同期 PHP プログラミングと非同期 PHP プログラミングの主な違いは何ですか?
多くのアプリケーションでは、CPU は I/O タスク中にアイドル状態で多くの時間を費やします。非同期 PHP の考え方は、ノンブロッキング I/O タスクをバックグラウンドで実行し、CPU が完了に必要なデータと命令を待っている間に他のタスクを処理することで、利用可能なすべての CPU サイクルを最大限に活用して他のタスクを実行することです。 I/O。同期 PHP では、CPU は I/O タスクのみを処理します。現在のタスクが完了したら、キュー内の次のタスクの処理を続行します。
非同期 PHP を使用すると、同期 PHP で作成されたアプリケーションと比較して超高速のパフォーマンスを実現できます。一部のベンチマークでは、Swoole を使用して非同期 PHP を有効にすると、同期コードで php-fpm などのプロセス アクセラレータを使用した場合と比較して、スループットが 100 倍向上します。これが、php-fpm が Websocket などのプロトコルを使用した非同期リアルタイム通信をサポートしていない理由です。
どの PHP を使用する必要がありますか?
ランタイム、Web サーバー、プログラミング全般に関するほとんどの問題と同様、さまざまなユースケースによって、同期 PHP を使用するか非同期 PHP を使用するかが決まります。非同期 PHP を使用するには、コードが非同期 PHP をサポートしている必要があります。 PHP 開発者が慣れ親しんでいる拡張機能のほとんどは、ブロック プロセス呼び出し (I/O ブロッキングとも呼ばれる) を使用することに慣れており、これにより非同期モデルが達成できなくなります。
たとえば、Swoole を利用するには、I/O リクエストの呼び出しが発生したときに、その呼び出しをバックグラウンドに送信し、次の命令の実行を続ける必要があります。 I/O 呼び出しがデータを返すとき、Swoole はプロセスへの要求データを制御できるように、バックグラウンドに送信された I/O 呼び出しに制御を戻す必要があります。非同期プロセスをサポートするようにコードを書き直すには、何らかのリファクタリングが必要になる場合があります。ただし、節約した時間は将来的に価値があるかもしれません。
非同期 PHP プロジェクトの開始
非同期プロセスをサポートする方法でコードを記述するため、非同期プロセスをサポートできるプロジェクトを利用する必要があります。ここでは、トップ 3 の推奨事項を示します。
- Swoole – 協調的な PHP 非同期プログラミング フレームワーク。
- Reactphp – PHP 用のイベント駆動型のノンブロッキング I/O。
- Amphp – PHP ノンブロッキング同時実行フレームワーク。
推奨チュートリアル: 「この記事は、php 中国語 Web サイトの php チュートリアル列からのものです。学習へようこそ! >>
以上が非同期PHPとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。