【发布时间】:2015-01-14 00:32:01
【问题描述】:
我有一个简单的 PHP 脚本,它使用 cURL 来获取 URL 的内容:
$curlOptions = [
CURLOPT_URL => $url,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HEADER => TRUE,
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_MAXREDIRS => 5,
CURLOPT_CONNECTTIMEOUT => 3,
CURLOPT_TIMEOUT => 5,
CURLOPT_NOBODY => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
];
$curl = curl_init();
curl_setopt_array( $curl, $curlOptions );
$curlResult = curl_exec( $curl );
$status = curl_getinfo( $curl, CURLINFO_HTTP_CODE );
curl_close( $curl );
但是,在某些情况下,尽管我为 CURLOPT_CONNECTTIMEOUT 和 CURLOPT_TIMEOUT 指定了较低的超时值,但我清楚地看到了 20 秒或更长时间的持续时间。
如何使 cURL 在我指定的值处超时?
更新:
所有需要 20 秒才能完成的 cURL 返回“状态”为 0。这可能是 DNS 问题,无法解析主机。我会假设CURLOPT_CONNECTTIMEOUT 会处理这个问题?
【问题讨论】:
-
你试过 CURLOPT_TIMEOUT_MS 吗?
-
我尝试将
CURLOPT_TIMEOUT_MS设置为 5000,但似乎没有什么不同。 -
尝试重置卷曲“curl_reset($ch);”而不是设置超时
-
我试过
curl_reset,好像没什么区别。我已向问题添加了更新。