php curl_init curl 訊息頭和訊息體

來源:互聯網
上載者:User
關鍵字 php curl
給定一個 遠程圖片地址(http地址) 然後用curl 請求 通過檢查返回的 訊息頭 判斷遠程圖片是否存在
但是這裡有個嚴重的效率問題就是訊息體
訊息體把圖片也給返回了 有設定可以 只產生訊息體 讓訊息體為空白或者或不產生訊息體嗎

//檢查遠程檔案function checkRemoteFile($file_name, $path) {    $path = $path . "/" . $file_name;    $ch = curl_init();    $timeout = 30;  //在嘗試串連時等待的秒數。設定為0,則無限等待。    curl_setopt($ch, CURLOPT_URL, $path);    curl_setopt($ch, CURLOPT_HEADER, 1);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);    $contents = curl_exec($ch);//echo $contents;    if (preg_match("/404/", $contents)) {        echo '0';        return false;    } elseif(preg_match("/200/", $contents)) {        echo $contents;        return true;    }} 

回複內容:

給定一個 遠程圖片地址(http地址) 然後用curl 請求 通過檢查返回的 訊息頭 判斷遠程圖片是否存在
但是這裡有個嚴重的效率問題就是訊息體
訊息體把圖片也給返回了 有設定可以 只產生訊息體 讓訊息體為空白或者或不產生訊息體嗎

//檢查遠程檔案function checkRemoteFile($file_name, $path) {    $path = $path . "/" . $file_name;    $ch = curl_init();    $timeout = 30;  //在嘗試串連時等待的秒數。設定為0,則無限等待。    curl_setopt($ch, CURLOPT_URL, $path);    curl_setopt($ch, CURLOPT_HEADER, 1);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);    $contents = curl_exec($ch);//echo $contents;    if (preg_match("/404/", $contents)) {        echo '0';        return false;    } elseif(preg_match("/200/", $contents)) {        echo $contents;        return true;    }} 

不用curl不就行了,fopen好像也可以開啟遠程檔案吧。

$hd = fopen($remoteUrl, 'r');if ($hd === false) die('404')else fclose($hd);

哦,看到你的評論了,用 curl_setopt($ch, CURLOPT_NOBODY, true); 看看

curl不可以嗎?你試試這個呢!

public function checkRemoteHttpFileExists($url) {    $curl = curl_init($url);    // 不取回資料    curl_setopt($curl, CURLOPT_NOBODY, true);    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');    // @curl_setopt($curl, CUROPT_RETURNTRANSFER,1);    // 發送請求    $result = @curl_exec($curl);    $found = false;    // 如果請求沒有發送失敗    if ($result !== false) {        // 再檢查http響應碼是否為200        $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);        if ($statusCode == 200) {            $found = true;        }    }    curl_close($curl);    return $found;}
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.