升級后的libcurl已經支持了毫米級別的超時。但是使用的時候還有一個坑需要注意跨過去 。
libcurl如果檢查到設置的timeout < 1s 那么會直接發出一個信號說 "已經超時了"
如果要使用毫秒超時 那么還需要關閉這個signal功能,即設置中需要多一個
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
但是,這樣域名解析就不會受超時控制。也就是說,有可能被域名解析卡住很長時間,使用時需要注意。
然后
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
這樣就可以控制 超時為 200ms了
其他的毫秒超時同理。
使用示例:
//以秒為單位:
curl_setopt($ch, CURLOPT_TIMEOUT, 1); //以毫秒為單位:在CURL7.16.2中被加入,從PHP5.2.3起可使用
curl_setopt($ch, CURLOPT_NOSIGNAL, true); curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);