我正在尝试使用 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"
),
));
即使我将连接超时和超时更改为 0/0.000001,它仍然不会超时。任何帮助都会很好。
根据文档,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
在定义的秒数后终止脚本。