私は PHP を通じて eXist データベースで curl リクエストを実行しています。データセットが非常に大きいため、データベースが XML 応答を返すのに常に長い時間がかかります。これを修正するために、長いタイムアウトを想定した curl リクエストを設定します。
$ch = curl_init();
$headers["Content-Length"] = strlen($postString);
$headers["User-Agent"] = "Curl/1.0";
curl_setopt($ch, CURLOPT_URL, $requestUrl);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, 'admin:');
curl_setopt($ch,CURLOPT_TIMEOUT,1000);
$response = curl_exec($ch);
curl_close($ch);
ただし、curl リクエストは、リクエストが完了する前に常に終了します (ブラウザー経由でリクエストされた場合は <1000)。これが curl でタイムアウトを設定する適切な方法であるかどうかを知っている人はいますか?
ベストアンサー1
ドキュメントを参照してください: http://www.php.net/manual/en/function.curl-setopt.php
CURLOPT_CONNECTTIMEOUT
- 接続を試行中に待機する秒数。無期限に待機するには 0 を使用します。
CURLOPT_TIMEOUT
- cURL 関数の実行を許可する最大秒数。
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds
また、PHP スクリプト自体の実行時間を延長することも忘れないでください。
set_time_limit(0);// to infinity for example