卷曲 - 从初始卷曲请求获取每个文件大小

时间:2012-10-04 14:28:38

标签: curl

我知道cURL可以获得一个页面的总下载大小,但我希望将下载大小分为下载的总图像数,下载的总脚本大小,总样式表大小下载等等。

这样做的一般方法是什么......我找到了这个链接PHP: Remote file size without downloading file

我认为这与做一个for循环和curl有关,可以通过初始卷曲请求获取每个文件的大小。

如果有人有任何提示,请告诉我们!

由于

1 个答案:

答案 0 :(得分:0)

制作此功能:

<?php
  getResourceSize($remoteFile /*link of the file*/)
  {
      $ch = curl_init($remoteFile);
      curl_setopt($ch, CURLOPT_NOBODY, true);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HEADER, true);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //not necessary unless the file redirects (like the PHP example we're using here)
      $data = curl_exec($ch);
      curl_close($ch);
      if ($data === false) {
        echo 'cURL failed';
        exit;
      }

      $contentLength = 'unknown';
      $status = 'unknown';
      if (preg_match('/^HTTP\/1\.[01] (\d\d\d)/', $data, $matches)) {
        $status = (int)$matches[1];
        if($status == ('404' || '500') return 'error';
      }
      if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
        $contentLength = (int)$matches[1];
        return $contentLength;
      }
  }
?>

现在将您的总下载大小初始化为:

$files = array
[
    "http://...firstFile.ext",
    "http://...secondFile.ext",
    "http://...thirdFile.ext",
    ...
];

 $totalDownloadSize = 0;

 foreach($file in $files)
     $totalDownloadSize += GetResourceSize($file);