我想计算一个网站根目录文件夹的大小(文件夹名为:web)
方法代码如下:function dirsize($dir)
 {
  @$dh = opendir($dir);
  $size = 0;
  while ($file = @readdir($dh)) 
   {
  if ($file != "." and $file != "..") 
   {
  $path = $dir."/".$file;
  if (is_dir($path))
   {
  $size += dirsize($path);
  } elseif (is_file($path)) {  $size += filesize($path);  }  }  }  @closedir($dh);
  return $size;
  }
请大家帮忙看下哪有错误!

解决方案 »

  1.   

    有全角字符,已更正
    function dirsize($dir)
    {
      $dh = opendir($dir);
      $size = 0;
      while ($file = @readdir($dh)) 
      {
        if ($file != "." and $file != "..") 
        {
          $path = $dir."/".$file;
          if (is_dir($path))
          {
            $size += dirsize($path);
          } elseif (is_file($path)) {
            $size += filesize($path);
          }
        }
      }
      closedir($dh);
      return $size;
    }
      

  2.   

    我还有一个方法来计算
    <?phpfunction getDirSize($dir)
        { 
            $handle = opendir($dir);
            while (false!==($FolderOrFile = readdir($handle)))
            { 
                if($FolderOrFile != "." && $FolderOrFile != "..") 
                { 
                    if(is_dir("$dir/$FolderOrFile"))
                    { 
                        $sizeResult += getDirSize("$dir/$FolderOrFile"); 
                    }
                    else
                    { 
                        $sizeResult += filesize("$dir/$FolderOrFile"); 
                    }
                }    
            }
            closedir($handle);
            return $sizeResult;
        }    // 单位自动转换函数
        function getRealSize($size)
        { 
            $kb = 1024;         // Kilobyte
            $mb = 1024 * $kb;   // Megabyte
            $gb = 1024 * $mb;   // Gigabyte
            $tb = 1024 * $gb;   // Terabyte
            
            if($size < $kb)
            { 
                return $size." B";
            }
            else if($size < $mb)
            { 
                return round($size/$kb,2)." KB";
            }
            else if($size < $gb)
            { 
                return round($size/$mb,2)." MB";
            }
            else if($size < $tb)
            { 
                return round($size/$gb,2)." GB";
            }
            else
            { 
                return round($size/$tb,2)." TB";
            }
        }    echo getRealSize(getDirSize(dirname($_SERVER['SCRIPT_FILENAME'])));
    ?>
      

  3.   

    <?phpfunction getDirSize($dir)
      {  
      $handle = opendir($dir);
      while (false!==($FolderOrFile = readdir($handle)))
      {  
      if($FolderOrFile != "." && $FolderOrFile != "..")  
      {  
      if(is_dir("$dir/$FolderOrFile"))
      {  
      $sizeResult += getDirSize("$dir/$FolderOrFile");  
      }
      else
      {  
      $sizeResult += filesize("$dir/$FolderOrFile");  
      }
      }   
      }
      closedir($handle);
      return $sizeResult;
      }  // 单位自动转换函数
      function getRealSize($size)
      {  
      $kb = 1024; // Kilobyte
      $mb = 1024 * $kb; // Megabyte
      $gb = 1024 * $mb; // Gigabyte
      $tb = 1024 * $gb; // Terabyte
        
      if($size < $kb)
      {  
      return $size." B";
      }
      else if($size < $mb)
      {  
      return round($size/$kb,2)." KB";
      }
      else if($size < $gb)
      {  
      return round($size/$mb,2)." MB";
      }
      else if($size < $tb)
      {  
      return round($size/$gb,2)." GB";
      }
      else
      {  
      return round($size/$tb,2)." TB";
      }
      }  echo getRealSize(getDirSize(dirname($_SERVER['SCRIPT_FILENAME'])));
    ?>