在php中使用CURL访问接口是很常用的操作,其中必不可少的选项是超时的设置curl_setopt($ch, opt),curl的超时设置包括连接超时和执行超时可选用以下几个选项:
CURLOPT_CONNECTTIMEOUT 在发起连接前等待的时间,如果设置为0,则无限等待。
CURLOPT_CONNECTTIMEOUT_MS 同上,但以毫秒为单位。
CURLOPT_TIMEOUT 设置cURL允许执行的秒数。默认为0,不限
CURLOPT_TIMEOUT_MS 同上,但是以毫秒为单位。 此项在cURL7.16.2中被加入。从PHP 5.2.3起可使用。、
CURLOPT_CONNECTTIMEOUT 在发起连接前等待的时间,如果设置为0,则无限等待。
CURLOPT_CONNECTTIMEOUT_MS 同上,但以毫秒为单位。
CURLOPT_TIMEOUT 设置cURL允许执行的秒数。默认为0,不限
CURLOPT_TIMEOUT_MS 同上,但是以毫秒为单位。 此项在cURL7.16.2中被加入。从PHP 5.2.3起可使用。、
CURLOPT_DNS_CACHE_TIMEOUT 设置在内存中保存DNS信息的时间,默认为120秒。
但尝试在PHP中如果使用CURLOPT_TIMEOUT_MS并且超时时间小于1秒时,会报错"http_error": "Timeout was reached", 如下为执行时所报的错误:
从PHP手机上看,这是一个BUG,要解决这个问题,需要设置CURLOPT_NOSIGNAL选项为true,curl_setopt ( $ch, CURLOPT_NOSIGNAL,true);
CURLOPT_NOSIGNAL:启用时忽略所有的curl传递给php进行的信号。在SAPI多线程传输时此项被默认启用。
友情提示:垃圾评论一律封号...