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<>"." && $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 && $path!='' && file_exists($path)){ foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){ $bytestotal += $object->getSize(); } } return $bytestotal; }
Les principales améliorations incluent :
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!