cari

Rumah  >  Soal Jawab  >  teks badan

php curl_init 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;
    }
} 
大家讲道理大家讲道理2791 hari yang lalu831

membalas semua(2)saya akan balas

  • PHPz

    PHPz2017-04-10 17:57:49

    不用curl不就行了,fopen好像也可以打开远程文件吧。

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

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

    balas
    0
  • 大家讲道理

    大家讲道理2017-04-10 17:57:49

    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;
    }

    balas
    0
  • Batalbalas