ホームページ  >  記事  >  バックエンド開発  >  PHP ノンブロッキング モードの簡単な紹介、PHP ブロッキング モードの簡単な紹介_PHP チュートリアル

PHP ノンブロッキング モードの簡単な紹介、PHP ブロッキング モードの簡単な紹介_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:57:491167ブラウズ

PHP ノンブロッキング モードの概要、PHP ブロッキングの概要

ノンブロッキング モードとは、ソケット イベントを使用するメッセージング メカニズムを指し、サーバーとクライアント間の通信は非同期状態になります。

PHP がバックエンドプロセスとして長時間の処理を完了する必要がある場合、結果の戻りを判断せずにページリクエストに迅速に応答するために、次の措置を講じることができます。

1. FastCGI モードを使用している場合、fastcgi_finish_request() を使用するとセッションをすぐに終了できますが、PHP スレッドは引き続き実行されます。 リーリー この例の出力では、出力プログラムの開始後にセッションが戻ることがわかります。そのため、デバッグ出力ブラウザーはセッションを受信できませんが、log.txt ファイルは 3 つの完了時間を完全に受信できます。


2. fsockopen と cUrl のノンブロッキング モードを使用して別の URL をリクエストします リーリー
cURL でcurl_multi_* 関数を使用して非同期リクエストを送信します

リーリー

3. Gearman と Swoole 拡張機能を使用する Gearman は、大量の非同期タスクを処理できる PHP 拡張機能を備えた分散型非同期処理フレームワークです。 Swooleは非同期メソッドが豊富で使いやすいので最近とても人気があります。 (Chenyuan からのメモ: PHP を再定義し、NodeJS を完全に破壊すると主張しています。Swoole ツールは優れていますが、拡張機能自体は NodeJS に匹敵しないと感じます)



4. Redis およびその他のキャッシュとキューを使用してキャッシュにデータを書き込み、バックグラウンドでスケジュールされたタスクを使用してデータの非同期処理を実現します。

この方法は、トラフィックの多い一般的なアーキテクチャでは非常に一般的です


5. 極端な場合、システムコマンドが呼び出され、データがバックグラウンドタスクに渡されて実行される可能性がありますが、個人的にはあまり効率的ではないと感じます。

リーリー

6. グリンゴの究極の動きがわかりません。php

でネイティブにサポートされています。 http://nikic.github.io/2012/12/22/Cooperative-multitasking-using-coroutines-in-PHP.html


7. pcntl 拡張機能をインストールし、pcntl_fork を使用してタスクを非同期に実行するための子プロセスを生成します。個人的にはこれが最も便利だと思いますが、ゾンビプロセスになりやすいです

リーリー 上記の内容は編集者が紹介したPHPのノンブロッキングモードですので、お役に立てれば幸いです。


http://www.bkjia.com/PHPjc/1106132.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1106132.html技術記事 PHP ノンブロッキング モードの簡単な概要 PHP ブロッキング ノンブロッキング モードについては、サーバーとクライアント間の通信が非同期状態にあることを指します。 PHP はもうやめましょう...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。