1. 程式人生 > >php中的curl的一些引數總結

php中的curl的一些引數總結

curl可以根據是否是http或則是https選擇加密傳送的內容;

使用curl傳送請求的基本流程

1,初始化連線控制代碼;

2,設定curl選項;

3,執行並獲取結果;

4,釋放curl連線控制代碼;

例子:

//初始化

$ch = curl_init();

//設定選項

curl_setopt($ch,CURLOPT_URL,"http://www.baidu.com");

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //引數意思:如果成功只將結果返回,不自動輸出任何內容

curl_setopt($ch,CURLOPT_HEADER,0);

//執行並獲取html內容

$output = curl_exec($ch);

if($output == false){

echo "curl error:".curl_error($ch);

 }

//釋放控制代碼

curl_close($ch);

curl中最重要的函式是curl_setopt()

獲取curl請求輸出的資訊:

curl_exec($ch);

$info = curl_getinfo($ch);

獲取curl的請求內容.$info;

curl_getinfo返回的是一個關聯陣列,包含以下資料:

  • url:網路地址。
  • content_type:內容編碼。
  • http_code:HTTP狀態碼。
  • header_size:header的大小。
  • request_size:請求的大小。
  • filetime:檔案建立的時間。
  • ssl_verify_result:SSL驗證結果。
  • redirect_count:跳轉計數。
  • total_time:總耗時。
  • namelookup_time:DNS查詢耗時。
  • connect_time:等待連線耗時。
  • pretransfer_time:傳輸前準備耗時。
  • size_uplpad:上傳資料的大小。
  • size_download:下載資料的大小。
  • speed_download:下載速度。
  • speed_upload:上傳速度。
  • download_content_length:下載內容的長度。
  • upload_content_length:上傳內容的長度。
  • starttransfer_time:開始傳輸的時間表。
  • redirect_time:重定向耗時。

curl_getinfo()函式還有一個可選擇引數$opt,通過這個引數可以設定以上的常量,對應到上述這個欄位;如果設定第二個引數,那麼返回的只有第二個引數。例如:$opt為CURLINFO_TOTAL_TIME,則curl_getinfo()函式只返回total_time,即總傳輸消耗時間,在只需要關注某些傳輸資訊時,設定$opt引數很有意義。

使用CURL傳送GET請求

如何使用curl來發送get請求,傳送get請求的關鍵是拼裝格式正確的URL.php提供了一個函式來專門拼裝GET請求和資料部分----http_build_query(),該函式接受一個關聯陣列,返回由該關聯資料描述的GET請求字串

例子如下:

//封裝curl的get請求方式;doCurlGetRequest()

function doCurlGetRequest($url,$data,$timeout = 5){

if($url == '' || $data = ' '){

return false;

 }

 $url = $url . '?'.http_build_query($data);

$ch  =  curl_init((string)$url);

curl_setopt($ch , CURLOPT_HEADER,false);

curl_setopt($ch , CURLOPT_RETURNTRANSFER , true);

curl_setopt($ch , CURLOPT_TIMEOUT , (int)$timeout);

return curl_exec($ch);

 }

這個函式把使用http_build_query()拼裝好的帶GET引數的URL傳給curl_init()函式,然後使用curl傳送http請求。

使用CURL傳送POST請求

可以使用CURLOPT_POSTFIELDS,設定該選項為POST就可以把請求放到正文中。

例子如下:

function doCurlPostRequest($url , $requestString , $timeout = 5){

$ch = curl_init(string($url));

curl_setopt($ch , CURLOPT_HEADER , false);

curl_setopt($ch , CURLOPT_POSTFIELDS , $requeststring);

curl_setopt($ch , CURLOPT_POST , true);

curl_setopt($ch , CURLOPT_RETURNTRANSFER , true);

curl_setopt($ch , CURLOPT_TIMEOUT , $timeout);

return curl_exec($ch);

 }