卷曲力到超时

时间:2018-03-05 12:04:51

标签: php curl timeout connection-timeout

我正在尝试使用curl测试我的超时条件并强制网站超时。这是我的卷曲设置:

curl_setopt_array($curl, array(
	CURLOPT_URL => "https://app.sample.com/api/abc/changelogs?last=3",
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_CONNECTTIMEOUT => 0,
	CURLOPT_TIMEOUT => 0,
	CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
	CURLOPT_CUSTOMREQUEST => "GET",
	CURLOPT_HTTPHEADER => array(
	"cache-control: no-cache"
	),
));

尽管我将CONNECTTIMEOUT和TIMEOUT更改为0 / 0.000001,但它仍然不会超时。任何帮助都会很好。

1 个答案:

答案 0 :(得分:2)

根据the documentationCURLOPT_CONNECTTIMEOUT是一个整数:

  

尝试连接时等待的秒数。使用0无限期等待。

如果你有cURL> = 7.16.2和PHP> = 5.2.3,你可以使用CURLOPT_CONNECTTIMEOUT_MS

  

尝试连接时等待的毫秒数。使用0无限期等待。如果构建libcurl以使用标准系统名称解析器,则连接的该部分仍将使用全秒分辨率进行超时,允许的最小超时时间为一秒。

但是,您不应该将其与CURLOPT_TIMEOUTCURLOPT_TIMEOUT_MS混淆:

  

CURLOPT_TIMEOUT - 允许cURL函数执行的最大秒数。    CURLOPT_TIMEOUT_MS - 允许cURL函数执行的最大毫秒数。如果构建libcurl以使用标准系统名称解析器,则连接的该部分仍将使用全秒分辨率进行超时,允许的最小超时时间为一秒。

明显的区别是CURLOPT_CONNECTTIMEOUT在脚本死亡之前是超时,如果没有连接;而CURLOPT_TIMEOUT在定义的秒数后杀死脚本。