ホームページ >バックエンド開発 >PHPチュートリアル >Apache、PHP、SOAP がどのように連携するか

Apache、PHP、SOAP がどのように連携するか

WBOY
WBOYオリジナル
2016-06-23 14:01:22859ブラウズ

私は PHP をリリースしたばかりで、最近 PHP 独自の SOAP を使用してサーバー側で RPC 機能を実装しました。
たくさんのserver.phpの例を調べましたが、うまくいきましたが、まだ疑問があります。
通常、server.php のコードは次のとおりです:
1. いくつかのメンバー関数を含むクラスを作成します。
2. 関数 SoapServer() を呼び出してサービスを作成します。
3. クラスに関数を登録します。
4. handle() 関数を呼び出して、クライアントの RPC 呼び出しリクエストを処理します。
5. handle() 関数が戻った後、このサービスは終了したとみなされます。

1 台の PC だけがクライアント リクエストを開始した場合、Apache サーバーはそれを簡単に処理できます。しかし、クライアントのリクエストが数万件ある場合、
上記のプロセスに従って処理すると、n 個のサービス ルーチンを作成し、それを n 回破棄する必要があるので、その非効率性は想像できます。
おそらく php はこのようには機能しないので、n (多数) のサービスリクエストを受信したときに、Apache と PHP は SOAP リクエストをどのように処理するのでしょうか。
処理プロセスの概要を説明します。


ディスカッションへの返信(解決策)

n 回のサービスルーチンを作成し、n 回のルーチンを破棄することです
しかし、そのような結論はあまりにも恣意的であることが想像できます
Web サービスはステートレスな http を使用します。プロトコルはステートレスであるため、サーバー側に永続オブジェクトを必要としません
さらに、サービスを作成するための SoapServer() 内のサービスは単なる名前であり、実際のサービスではありません

プログラムを実際に実行して確認してみましょう xhprof をインストールしましょうパフォーマンスのボトルネックがどこにあるのかを確認するためにストレス テストを行ってください~
もちろん、弟、私は RPC をやったことがありませんが、通常の状況では、「オブジェクトの作成」と「関数の呼び出し」がボトルネックになる前に、さらに多くのことが起こるでしょうデータベースの効率化、リソースを無駄に消費するビジネスコード、アクティブなユーザーがいないためプロジェクトが開発できなくなるなど、面倒なところがボトルネックになる ~

n回のサービスルーチンを作成して破棄する必要があるn 回のルーチン
ただし、このような結論はあまりにも恣意的であることが想像できます。また、Web サービスはステートレスな http プロトコルを使用するため、サーバー側に永続的なオブジェクトは必要ありません。 () はサービス内にサービスを作成します。これは単なる名前であり、本当の意味でのサービスではありません

いくつかの意見にはあまり同意できません。
永続オブジェクトをサーバーに配置するかどうかは、HTTP プロトコルのステートレス性とは関係がありません。結局のところ、サーバーのリソースは限られており、「接続?切断」と「クエリ?解放」を繰り返すと、無駄なオーバーヘッドが発生します。外部リソースを繰り返し要求せずに、このデータを保持する永続オブジェクトがあれば便利です。

ちなみに、モデレータにフィードバックをお願いしたいのですが、フォーラムのテキスト編集エクスペリエンスを改善してください。現在のフォーラムは、「見たものがそのまま得られる」ものでも、マークダウンや Wiki のような「主流の普遍的な」ものでもありません。注意しないと、送信後にエラーを修正することができなくなります。

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