php curl_init curl 消息头和消息体
大家讲道理
大家讲道理 2017-04-10 17:55:49
0
2
828

给定一个 远程图片地址(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;
    }
} 
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(2)
PHPzhong

不用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;
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal