ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルでリモート ファイル サイズを取得する一般的な方法の概要

PHP_PHP チュートリアルでリモート ファイル サイズを取得する一般的な方法の概要

WBOY
WBOYオリジナル
2016-07-20 10:59:15941ブラウズ

PHP でリモート ファイルのサイズを取得する方法は数多くありますが、最も一般的に使用されるのは fsockopen、file_get_contents、curl 関数です。 ​

1.fsockopen

コードは次のとおりです コードをコピー

関数getFileSize($url){
$url = parse_url($url);
if($fp = @fsockopen($url['host'],empty($url['port'])?80:$url['port'],$error)){
fputs($fp,"GET ".(empty($url['path'])?'/':$url['path'])." HTTP/1.1rn");
fputs($fp,"ホスト:$url[ホスト]rnrn");
while(!feof($fp)){
$tmp = fgets($fp);
if(trim($tmp) == ''){
休憩;
}else if(preg_match('/Content-Length:(.*)/si',$tmp,$arr)){
リターントリム($arr[1]);
}
}
null を返す;
}その他{
null を返す;
}
}
//メソッドを呼び出す
echo getFileSize("http://www.bkjia.comnet/")
?>


2. file_get_contents() を使用します

コードは次のとおりです コードをコピー

$file = file_get_contents($url);
エコー strlen($file);
?>

3. get_headers() を使用する

コードは次のとおりです コードをコピー

$header_array = get_headers($url, true);

//結果を返す
配列
(
[0] => HTTP/1.1 200 OK
[日付] => 2004年5月29日(土) 12:28:14 GMT
[サーバー] => Apache/1.3.27 (Unix) (Red-Hat/Linux)
[Last-Modified] => 2003 年 1 月 8 日水曜日 23:11:55 GMT
[ETag] =>「3f80f-1b6-3e1cb03b」
[Accept-Ranges] => バイト
[コンテンツの長さ] => 438
[接続] =>閉じる
[Content-Type] => text/html
)


$size = $header_array['コンテンツの長さ'];
エコー $size;
?>

4.カール

代码如下 复制幣

関数remote_filesize($uri,$user='',$pw='')
{
    // 出力バッファリングを開始します
    ob_start();
    // 指定された URI でカールを初期化します
    $ch =curl_init($uri);
    // ヘッダーを必ず取得します
    curl_setopt($ch, CURLOPT_HEADER, 1);
    // http HEAD リクエストにします
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    // 認証が必要な場合は、ここで認証を行ってください
    if (!emptyempty($user) && !emptyempty($pw))
    {
        $headers = array('Authorization: Basic ' .base64_encode($user.':'.$pw));
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }
    $okay =curl_exec($ch);
    curl_close($ch);
    // 出力バッファを取得します
    $head = ob_get_contents();
    // 出力バッファをクリアして前に戻ります
    // バッファ設定
    ob_end_clean();
 
    エコー「
」 head->'.$head.'<----end
';
 
    // Content-Length から数値を取得します
    // http ヘッダーのフィールド
    $regex = '/Content-Length:s([0-9].+?)s/';
    $count = preg_match($regex, $head, $matches);
 
    // Content-Length フィールドがある場合は、その値
    // これで $matches[1] に追加されます
    if (isset($matches[1]))
    {
        $size = $matches[1];
    }
    それ以外
    {
        $size = '不明';
    }
    //$last=round($size/(1024*1024),3);
    // $last を返します。 MB';
    $size を返します;
}


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/445618.html技術記事 php には、大きなサイズのプロセス ファイルを取得できる非常に多くの方法があり、最もよく使用されるのは、fsockopen、file_get_contents、curl 関数、下で各位を徹底的に調べます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。