1. 程式人生 > >CURL超時時間設置

CURL超時時間設置

url 地址 輸出 獲得 ket time 完整 nal 進行

一次完整的http請求,一般包含三個步驟:

  1. 通過DNS把域名解析成IP
  2. 通過IP地址連接到目標主機
  3. 獲取目標主機數據(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超時時間設置