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秒を超える要求はドロップする必要があります。