在PHP中获取目录大小的最佳方法是什么?我正在寻找一种轻量级的方法,因为我将使用它的目录非常庞大。
在SO上已经有一个question,但它已经过了三年了,解决方案已经过时了。(现在fopen
因安全原因而被禁用。)
答案 0 :(得分:5)
您可以使用RecursiveDirectoryIterator吗?
$bytes = 0;
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
foreach ($iterator as $i)
{
$bytes += $i->getSize();
}
答案 1 :(得分:2)
您可以使用unix命令du:
尝试执行运算符 $ output = du -s $folder
;
FROM:http://www.darian-brown.com/get-php-directory-size/
或编写自定义函数来总计目录中所有文件的文件大小:
function getDirectorySize($path)
{
$totalsize = 0;
$totalcount = 0;
$dircount = 0;
if($handle = opendir($path))
{
while (false !== ($file = readdir($handle)))
{
$nextpath = $path . '/' . $file;
if($file != '.' && $file != '..' && !is_link ($nextpath))
{
if(is_dir($nextpath))
{
$dircount++;
$result = getDirectorySize($nextpath);
$totalsize += $result['size'];
$totalcount += $result['count'];
$dircount += $result['dircount'];
}
else if(is_file ($nextpath))
{
$totalsize += filesize ($nextpath);
$totalcount++;
}
}
}
}
closedir($handle);
$total['size'] = $totalsize;
$total['count'] = $totalcount;
$total['dircount'] = $dircount;
return $total;
}