PHP - 获取目录的大小

时间:2012-02-06 16:26:58

标签: php filesystems

在PHP中获取目录大小的最佳方法是什么?我正在寻找一种轻量级的方法,因为我将使用它的目录非常庞大。

在SO上已经有一个question,但它已经过了三年了,解决方案已经过时了。(现在fopen因安全原因而被禁用。)

2 个答案:

答案 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;
}