ホームページ  >  記事  >  バックエンド開発  >  タイトルの決め方が分かりません。

タイトルの決め方が分かりません。

WBOY
WBOYオリジナル
2016-06-13 12:53:36753ブラウズ

タイトルのつけ方がわからないので質問させてください。
そのときのタイトルをそのまま使いましょう。
サーバー上に 1.php
などの php ファイルがあります。
他の人がこのファイルをリクエストしたとき
このファイルは実行され、実行後にクライアントに返されます



私の質問は
です クライアントが 1.php にアクセスすると、サーバーは実行を完了していません。
突然、クライアント b も訪ねてきました。これは 1. php は b のリクエストを実行する前に a のリクエストが返されるのを待っていますか、それとも b のリクエストを同時に実行できますか?



-----解決策---------b のリクエストを同時に実行するtime

------解決策---------実際には、これにはネットワーク モデルの問題が関係しています。
Apache の代わりに nginx が推奨されている理由をご存知ですか?

Apache は古いバージョンの Linux カーネルの選択モデルを使用するのに対し、nginx は 2.6 バージョンの epool モデルを使用するためです。

あなたが言及した特定の問題に戻ると、クライアント b が訪問すると、サーバーはクライアント b のリクエストを受け入れる前にクライアント a の処理結果を待ちます。これが選択モデルの仕組みです。リクエストを受信した後、レスポンスが終了するまで同じプロセスがハンドシェイク プロセス全体に続きます。このモデルは DDoS 攻撃に対しても脆弱です。

epool モデルは非同期です。サーバーがリクエストを受信した後、メインプロセスはタスクを適切に分割する責任を負い、残りのタスクは他のスレッドに処理を委託します。メインプロセスは応答して、対応するクライアントに戻ります。この動作方法では、各リクエストが相互にブロックされません。

しかし、このように説明しても、Apache は同時タスクを処理できないということが理解できないかもしれません。 1 つのリクエストがブロックされ、他のリクエストを受信できなくなりますか?もちろんそうではありません。n 個のプロセスが Apache ワーカー モードで開かれ、いわゆるブロッキングでは 1 つのプロセスのみがブロックされます。しかし、選択モデルの仕組みは非常に非効率的です。

この部分の知識については、libevent
を参照してください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。