2011-01-12 11 views
9

は、誰かが私たちに次のパラメータ間の動作の違いを説明できますか? Zend_Http_Client_Adapter_Socketをクラスでkeep_aliveオプションとHTTPリクエストの永続オプションの違いは何ですか? Zend_Http_Clientのクラスの</p> <p><b>KEEP_ALIVE</b>パラメータ:

永続

私は、(SSLのネゴシエーションを避けるために)たくさんのHTTPS接続を開いたままにする必要があることを理解したいと思います。

おかげで、

ガストン
+0

あなたは永続したいと思うようです。 – Amber

答えて

0

キープアライブは、リクエストの終了時に閉鎖されても、接続は、個々の要求にわたって再使用することができることを意味します。永続的とは、同じPHPプロセスでの後続のリクエストで使用されるように、接続が個々のリクエストを超えて生き残ることを意味します。

+0

これは正確ではありません。キープアライブとは、同じ接続を使用して同じサーバー(HTTP/1.1を使用していると仮定)に対して複数の要求を行うことができることを意味します。ただし、要求を迅速に行わないと、サーバーによって接続が切断されます。 – Brad

1

持続的な接続を使用する場合は、Keep Aliveをそのまま使用してください.Alive HTTP 1.1接続ではが有効です。は、ジョブをエミュレートするために多くの作業が必要になります。

編集:サーバーによって設定されたquite- 短時間設定、およそ(食べる時間だった)

キープアライブ設定会談。デフォルトでApacheはキープアライブ要求の場合は15sを処理しますが、現在の最適化設定は5秒です。これは、ほとんどの場合、HTTPクライアントがjsとcssを同じHTTP接続のページにダウンロードするのを助けるために行われます。サーバー設定を調整できる場合、最長のキープアライブクエリを試すことができます(ただし、注意してください。これは、サーバーによって達成されるクライアントの数を厳しく制限します)。

永続的な接続モードは、長期的な永続的な接続を実際にエミュレートするために行われます。オープンされたソケットは、スクリプトの最後に閉じられません。あなたはそのような設定に非常に注意する必要があります。あなたはCLIモードですか? FCGI?あなたがApacheのプロセスで実行している場合は、このスクリプトの次のリクエスト(別のApacheプロセスによって処理される可能性があります)で同じ接続を取得するのは本当にわかりませんが、コードが実行されている場合はさらに悪いことです大規模な展開でいくつかのApacheサーバー。これはクライアント側(PHP側)ですが、ターゲットサーバにとって大きな苦痛になる可能性があります。

再編集:(SSLについて何かを言わなければならないので)

はあなたがSSLの交渉時間を最適化する必要がありますか? SSLは少なくともサーバー側でCacheを使用して、最初の要求へのネゴシエーションを制限します。 SSLセッションのクライアントサイドキャッシングは、PHP stream_socket_client関数(これはZendクラスで使用されています)を使用して、新しいクラスを独自にテストできます(インターフェイスを実装するだけで済みます)。デフォルトではSSLセッションキャッシュを使用しています。

+0

あなたのご意見ありがとうございます –

0

キープアライブでHTTP接続を再利用する必要がありますが、アダプタークラス(少なくとも最新の1.10)はこれを正しく処理せず、フラグ。

関連する問題