我正在尝试使用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,但它仍然不会超时。任何帮助都会很好。
答案 0 :(得分:2)
根据the documentation,CURLOPT_CONNECTTIMEOUT
是一个整数:
尝试连接时等待的秒数。使用0无限期等待。
如果你有cURL> = 7.16.2和PHP> = 5.2.3,你可以使用CURLOPT_CONNECTTIMEOUT_MS
:
尝试连接时等待的毫秒数。使用0无限期等待。如果构建libcurl以使用标准系统名称解析器,则连接的该部分仍将使用全秒分辨率进行超时,允许的最小超时时间为一秒。
但是,您不应该将其与CURLOPT_TIMEOUT
和CURLOPT_TIMEOUT_MS
混淆:
CURLOPT_TIMEOUT
- 允许cURL函数执行的最大秒数。CURLOPT_TIMEOUT_MS
- 允许cURL函数执行的最大毫秒数。如果构建libcurl以使用标准系统名称解析器,则连接的该部分仍将使用全秒分辨率进行超时,允许的最小超时时间为一秒。
明显的区别是CURLOPT_CONNECTTIMEOUT
在脚本死亡之前是超时,如果没有连接;而CURLOPT_TIMEOUT
在定义的秒数后杀死脚本。