首頁 > 後端開發 > php教程 > 如何在 PHP 中有效計算目錄的大小?

如何在 PHP 中有效計算目錄的大小?

Patricia Arquette
發布: 2024-11-29 13:41:20
原創
787 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板