CURL超時時間設置
阿新 • • 發佈:2017-05-22
url 地址 輸出 獲得 ket time 完整 nal 進行
一次完整的http請求,一般包含三個步驟:
- 通過DNS把域名解析成IP
- 通過IP地址連接到目標主機
- 獲取目標主機數據(1、給目標主機輸出http請求頭,以\r\n\r\n結尾;2、獲取目標主機傳過來的數據)
php 的 curl 對以上三個步驟都有設置超時時間的方法
1、保存DNS信息時間
CURLOPT_DNS_CACHE_TIMEOUT 設置在內存中保存DNS信息的時間,默認為120秒。
2、連接超時時間
CURLOPT_CONNECTTIMEOUT 以秒為單位。如果設置為0,則無限等待。
CURLOPT_CONNECTTIMEOUT_MS 以毫秒為單位。如果設置為0,則無限等待。
3、執行超時時間( DNS解析+連接+提交請求數據+獲取請求數據? 或是 提交請求數據+獲取請求數據 ?)
CURLOPT_TIMEOUT 設置cURL允許執行的最長秒數。
CURLOPT_TIMEOUT_MS 設置cURL允許執行的最長毫秒數。
註意:
1、毫秒級設置在cURL 7.16.2中被加入。從PHP 5.2.3開始可用的。如果需要進行毫秒超時,需要增加:
curl_easy_setopt(curl, CURLOPT_NOSIGNAL,1L);
//或者
curl_setopt ( $ch, CURLOPT_NOSIGNAL,true);
2、cURL的超時既是socket的超時,因為底層就是socket,所以cURL的默認時間可以在 php.ini 裏面設置
default_socket_timeout = 60
3、提交請求數據包括header和body,header和body之間用 \r\n\r\n 隔開,獲得請求數據一樣。這是http的規定。
CURL超時時間設置