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 を返します;
}
|
http://www.bkjia.com/PHPjc/445618.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/445618.html技術記事 php には、大きなサイズのプロセス ファイルを取得できる非常に多くの方法があり、最もよく使用されるのは、fsockopen、file_get_contents、curl 関数、下で各位を徹底的に調べます。