首页 > 后端开发 > php教程 > 如何在 PHP 中有效计算目录的大小?

如何在 PHP 中有效计算目录的大小?

Patricia Arquette
发布: 2024-11-29 13:41:20
原创
782 人浏览过

How to Efficiently Calculate a Directory's Size in PHP?

如何使用 PHP 确定目录大小

计算目录(包括其子目录)的大小可能是管理文件的一项重要任务存储和性能。本文演示了如何使用优化方法在 PHP 中实现此目的。

现有方法

提供的 PHP 代码片段计算目录的大小,如下所示:

function foldersize($path) {
  $total_size = 0;
  $files = scandir($path);

  foreach($files as $t) {
    if (is_dir(rtrim($path, '/') . '/' . $t)) {
      if ($t<>"." &amp;&amp; $t<>"..") {
          $size = foldersize(rtrim($path, '/') . '/' . $t);

          $total_size += $size;
      }
    } else {
      $size = filesize(rtrim($path, '/') . '/' . $t);
      $total_size += $size;
    }
  }
  return $total_size;
}
登录后复制

优化

原代码展示由于不必要的递归函数调用和冗余文件存在检查而导致的性能问题。下面的优化函数解决了这些问题:

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false &amp;&amp; $path!='' &amp;&amp; file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
登录后复制

主要增强功能包括:

  • 使用 realpath 验证路径。
  • 在迭代之前检查路径有效性和文件存在性.
  • 跳过 .和 .. 目录。
  • 使用 FilesystemIterator::SKIP_DOTS 标志来避免处理隐藏的目录和文件。

示例用法

利用优化函数:

$path = '/var/www/html/myproject';
$directorySize = GetDirectorySize($path);
echo "Size of '$path': " . format_bytes($directorySize);
登录后复制

此代码确定指定目录的大小并以人类可读的格式显示结果。

以上是如何在 PHP 中有效计算目录的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板