2012-05-10 11 views
2

PHPでhttpsリクエストで効率的にタイムアウトを設定する方法はありますか?PHPが効率的にHTTPSリクエストでタイムアウトを設定しました

SOAP要求をシミュレートするカールを伴うsolutionがありますが、かなり遅いです。

低速サービスに対してベンチマークを実行すると、同じ要求に対してSOAPクライアントが平均して5.5秒かかることがわかります。

stream socket
の代替は、しかし
はstream_set_timeout機能は、HTTPS接続で動作していないよう(ZendHttpClientAdapterSocketにZend Frameworkの実装により)があります。問題が解決策を見つけるの両方のhttpと石鹸要求

上で動作読み取りタイムアウト(応答を取得する時間)とない接続タイムアウト(握手をする時間)であることを

くださいノートカールを速くすると問題が解決されます。

ユーザーストーリー
私は、ZendのSOAPクライアントを使用して外部のhttps石鹸Webサービスへの要求を作っています。
サービスは通常、ネットワークが正常であれば平均5.5秒で応答します。
ただし、ネットワークに問題がある場合は、サーバーのリソースを消費する要求が最大で7〜8分です。

私はカールを使用してタイムアウトを強制することができますし、Webサービスにネットワークの問題があるときに問題を解決しています。
ネットワークの応答時間が平均6.5秒になる ビジネス要件では、システムの安定性を確保するために、30秒以上の時間を要する要求があることが示唆されています。

+0

私はそれを得ることができません:あなたは読み取りタイムアウトを設定したいが、カールを速くするのもいいですか?あなたの実際の問題は何ですか? – Halcyon

+0

Frits、私はあなたのコメントに答えるために質問を更新しました。ありがとう。 –

答えて

1

これは、あなたがcURL以外のものを使用しているかどうかによって異なります。

ストリームを使用している場合は、stream_set_timeout(読み取りと書き込みのタイムアウトを設定)を使用できます。

fsockopenで指定できる接続タイムアウト、またはストリームを作成します。


SOAPクライアントで読み取りと書き込みのタイムアウトを指定できるかどうかを確認してください。

+0

これはhttpsで動作するか試しましたか?私はそれがhttpで動作することを知っています。 –

+0

はい、私は(大成功で)持っています。あなたのサーバはmod_sslを有効にする必要があります。そうしないと、ssl_stream_filterは利用できなくなり、PHPはエラーを投げます。あなたが取り組んでいるレベルでhttpとhttpsの間に違いはありませんが、それらは交換可能です。 – Halcyon