Maison >développement back-end >tutoriel php >Comment calculer efficacement la taille d'un répertoire en PHP ?

Comment calculer efficacement la taille d'un répertoire en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-29 13:41:20814parcourir

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

Comment déterminer la taille d'un répertoire à l'aide de PHP

Le calcul de la taille d'un répertoire, y compris ses sous-répertoires, peut être une tâche importante pour la gestion des fichiers stockage et performances. Cet article montre comment y parvenir en PHP en utilisant une approche optimisée.

Méthode existante

L'extrait de code PHP fourni calcule la taille d'un répertoire comme suit :

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

Optimisation

Le code d'origine présentait des problèmes de performances dus à appels de fonctions récursifs inutiles et vérifications de l'existence de fichiers redondants. La fonction optimisée ci-dessous répond à ces préoccupations :

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

Les principales améliorations incluent :

  • Vérification du chemin à l'aide de realpath.
  • Vérification de la validité du chemin et de l'existence du fichier avant l'itération. .
  • Sauter . et .. répertoires.
  • Utilisation de l'indicateur FilesystemIterator::SKIP_DOTS pour éviter de traiter les répertoires et fichiers cachés.

Exemple d'utilisation

Utilisation la fonction optimisée :

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

Ce code détermine la taille du répertoire spécifié et affiche le résultat dans un format lisible par l'homme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn