同時実行性 - nginx プラグインは、時間のかかる操作をブロックしない方法でどのように実装しますか?
phpcn_u1582
phpcn_u1582 2017-05-16 17:12:26
0
1
401

問題の説明:

nginx の優れたパフォーマンスの理由が非同期で非ブロッキングの基盤にあることは誰もが知っています。そのため、ネットワーク リクエストを処理する nginx プラグインを開発するときは、時間のかかる特定の操作をブロック方式で実行することを忘れないでください。そうしないと、nginx のパフォーマンスに深刻な影響を及ぼします...

次の質問が発生します:プラグインで時間のかかる操作を実行したい場合はどうすればよいですか?たとえば、データベースにクエリを実行します (データベースは http プロトコルをサポートしていません。特別なプロトコルがあります)。

ps: スレッド プールを開いて、これらのブロック操作をプールにスローすることはできますが、nginx フレームワークのイベント キューへの現在のリクエスト処理を一時停止する方法はありますか?ステータスの変更がブロッキング操作のコールバック関数で送信されるとき、nginx は前のリクエストの処理を続行しますか?

ありがとう

phpcn_u1582
phpcn_u1582

全員に返信 (1)
迷茫

データベースクエリは本質的にネットワーク通信であり、ソケットの読み取りと書き込みがブロックされていない限り、問題はありません。これは言うは易く行うは難しです。 nginx 自体には、http 上でさまざまな非ブロッキング操作を実装するための再利用可能なメカニズムがいくつかあります。ただし、tcp などの通信はすぐに利用できない場合があります。自分で書かなければなりませんが、それはより複雑だと思いますし、nginx に統合する必要もあります。

いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!