2

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

SOAPリクエストをシミュレートするcurlを使用したソリューションがありますが、かなり遅くなります。

遅いサービスに対してベンチマークを行うと、SOAPクライアントが同じリクエストにかかる5.5秒ではなく、平均6.5秒になります。

ストリームソケットの代替手段があります
(ZendHttpClientAdapterSocketでZend Frameworkによって実装されます)が、
stream_set_timeout関数はhttps接続では機能しないようです。

問題は読み取りタイムアウト(応答を取得する時間)であり、http要求とsoap要求の両方で機能する接続タイムアウト(ハンドシェイクを実行する時間)ではないことに注意してください。

カールを速くするための解決策を見つけることも問題を解決します。

ユーザーストーリー
zendsoapクライアントを使用して外部のhttpssoapWebサービスでリクエストを行っています。
ネットワークに問題がない場合、サービスは通常平均5.5秒で応答します。
ただし、ネットワークの問題がある場合、一部のリクエストはサーバーリソースを消費するのに最大7〜8分かかります。

curlを使用してタイムアウトを強制すると、Webサービスにネットワークの問題がある場合に問題を解決できます。
ただし、ネットワークに問題がない場合、平均応答時間は最大6.5秒になります。ビジネス要件では、システムの安定性を確保するために、30秒を超える要求はドロップする必要があります。

4

1 に答える 1

1

それは、cURL 以外に何を使用しているかによって異なります。

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

fsockopenストリームの作成時に指定できる接続タイムアウト。


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

于 2012-05-10T16:18:03.570 に答える