J'ai un dossier nommé fichiers code>, comment puis-je déterminer la somme de la taille de ses fichiers? p>
4 Réponses :
echo array_sum(array_map('filesize', glob('*')));
Cela n'exclut pas les annuaires, n'est-ce pas? C'est aussi inefficace. D'abord, vous Glob Les noms de fichiers, puis vous les remplacez de leur taille, puis vous les résumez. C'est deux itérations supplémentaires sur la matrice initiale lorsque vous pourriez tout faire dans une seule itération.
De plus, vous pouvez ajouter glob_nosort code> lorsque vous ne vous souciez pas de la commande de fichier de toute façon. Voir Phparch.com/2010/04/28/ Mettre-glob-to-the-test - qui devrait ajouter une certaine vitesse à GLOB. Toujours pas optimal cependant.
Array_Reduce (GLOD ('? *. ou un dérivé est beaucoup i> plus jolie.
avec répertoire et splfileinfo et au cas où vous avez besoin de sous-dossiers: P> $iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/path/to/dir')
);
$totalSize = 0;
foreach ($iterator as $file) {
$totalSize += $file->getSize();
}
echo $totalSize;
Réponse wwasome :) L'utilisation de cela est si facile. Merci d'avoir répondu
Essayez-le en utilisant FileSize () Pour calculer la taille du fichier en itérant à tous les fichiers et fichiers sous-répertoires.
<?php
function get_dir_size($dir_name){
$dir_size =0;
if (is_dir($dir_name)) {
if ($dh = opendir($dir_name)) {
while (($file = readdir($dh)) !== false) {
if($file !=â.â && $file != â..â){
if(is_file($dir_name.â/â.$file)){
$dir_size += filesize($dir_name.â/â.$file);
}
/* check for any new directory inside this directory */
if(is_dir($dir_name.â/â.$file)){
$dir_size += get_dir_size($dir_name.â/â.$file);
}
}
}
}
}
closedir($dh);
return $dir_size;
}
$dir_name = âdirectory name hereâ;
/* 1048576 bytes == 1MB */
$total_size= round((get_dir_size($dir_name) / 1048576),2) ;
print âDirectory $dir_name size : $total_size MBâ;
?>
Si vous avez accès à la fonction Exec, vous pouvez utiliser ce code:
exec("du /home/ -s 2>&1",$output);
echo intval($output[0]) ;
Veuillez ne pas recommander l'utilisation de EXEC () code>, en particulier lorsqu'il implique tout type d'entrée variable fournie par l'utilisateur. Cela ouvre juste la possibilité pour les injections de commandes Shell et toutes ses implications liées à la sécurité, et personne ne le souhaite vraiment. Cependant, si cela ne peut pas être évité, au moins pointez sur EscapeShellarg () ou Une autre solution pour assainir la saisie de l'utilisateur avant de passer à EXEC () code>.
Vérifiez ceci: phpsnaps.com/snaps/view / Somme de taille-de-taille-de-fichier-répertoire