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
Freigeben: 2024-11-29 13:41:20
Original
782 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage