我知道 cURL 可以获取页面的总下载大小,但我希望将下载大小分为下载的总图像、下载的总脚本大小、总样式表大小下载等。
这样做的一般方法是什么...我找到了这个链接PHP: Remote file size without download file
我认为这与执行 for 循环和 curl 以获取初始 curl 请求拉入的每个文件的大小有关。
让我知道是否有人有任何提示!
谢谢
我知道 cURL 可以获取页面的总下载大小,但我希望将下载大小分为下载的总图像、下载的总脚本大小、总样式表大小下载等。
这样做的一般方法是什么...我找到了这个链接PHP: Remote file size without download file
我认为这与执行 for 循环和 curl 以获取初始 curl 请求拉入的每个文件的大小有关。
让我知道是否有人有任何提示!
谢谢
做这个功能:
<?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);