Heim >Backend-Entwicklung >PHP-Tutorial >Wie berechnet man effizient die Größe eines Verzeichnisses in PHP?

Wie berechnet man effizient die Größe eines Verzeichnisses in PHP?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-29 13:41:20814Durchsuche

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

So bestimmen Sie die Verzeichnisgröße mit PHP

Das Berechnen der Größe eines Verzeichnisses, einschließlich seiner Unterverzeichnisse, kann eine wichtige Aufgabe für die Dateiverwaltung sein Speicher und Leistung. Dieser Artikel zeigt, wie Sie dies in PHP mithilfe eines optimierten Ansatzes erreichen können.

Vorhandene Methode

Das bereitgestellte PHP-Code-Snippet berechnet die Größe eines Verzeichnisses wie folgt:

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

Optimierung

Der ursprüngliche Code wies Leistungsprobleme auf zu unnötigen rekursiven Funktionsaufrufen und Überprüfungen redundanter Dateien. Die folgende optimierte Funktion geht auf diese Bedenken ein:

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

Zu den wichtigsten Verbesserungen gehören:

  • Überprüfung des Pfads mithilfe von Realpath.
  • Prüfung auf Pfadgültigkeit und Dateiexistenz vor der Iteration .
  • Überspringen . und .. Verzeichnisse.
  • Verwendung des FilesystemIterator::SKIP_DOTS-Flags, um die Verarbeitung versteckter Verzeichnisse und Dateien zu vermeiden.

Beispielverwendung

Nutzung die optimierte Funktion:

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

Dieser Code bestimmt die Größe der angegebenen Verzeichnis und zeigt das Ergebnis in einem für Menschen lesbaren Format an.

Das obige ist der detaillierte Inhalt vonWie berechnet man effizient die Größe eines Verzeichnisses in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn