PHP使用CURL詳解

PHP使用CURL詳解php


Curl是一個很是強大的開源庫,支持不少協議,包括HTTP、FTP、TELNET等,咱們使用它來發送HTTP請求。它給我 們帶來的好處是能夠經過靈活的選項設置不一樣的HTTP協議參數,而且支持HTTPS。CURL能夠根據URL前綴是「HTTP」 仍是「HTTPS」自動選擇是否加密發送內容。html

使用方法

使用CURL的PHP擴展完成一個PHP的請求,通常分爲四個步驟:數組

  1. 初始化Curl鏈接句柄網絡

  2. 設置屬性選項curl

  3. 執行獲取結果,處理異常函數

  4. 關閉Curl鏈接句柄post

實例

/*get請求*/
function curlGet($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if (($tmp = curl_exec($ch)) === false) {
        return false;
    }
    curl_close($ch);
    return $tmp;
}

/*post請求*/
function curlPost($url, $params) {
    $ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE;
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER,FALSE);
    curl_setopt($ch, CURLOPT_NOBODY, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    curl_setopt($ch, CURLOPT_POST,TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
    if ($ssl){
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何證書
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 檢查證書中是否設置域名
    }
    if (($returnData = curl_exec($ch)) === false) {
        return false;
    }
    curl_close($ch);
    return $returnData;
}

說明:ui

  1. 經過curl_init($url);初始化連句柄,也能夠經過選項設置curl_setopt($ch, CURLOPT_URL, $url);參數爲請求的地址編碼

  2. 經過curl_setopt()設置鏈接的選項,CURLOPT_RETURNTRANSFER 設置爲1表示稍後執行的curl_exec函數的返回是URL的返回字符串,而不是把返回字符串定向到標準輸出並返回TRUE;其餘選項設置參考http://www.php.net/manual/en/...加密

  3. ($tmp = curl_exec($ch)獲取請求結果

  4. curl_close($ch)釋放鏈接

獲取CURL的請求輸出參數

在curl_exec()函數執行以後,能夠使用curl_getinfo()函數獲取CURL請求輸出的相關信息,示例代碼以下:

curl_exec($ch);
$info = curl_getinfo($sh);

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,即總傳輸消耗的時間

參考:

http://www.php.net/manual/zh/...

http://www.cnblogs.com/manong...

相關文章
相關標籤/搜索