PHP: ottieni la dimensione di una directory

Qual è il modo migliore per get la dimensione di una directory in PHP? Sto cercando un modo leggero per farlo poiché le directory che userò per questo sono piuttosto grandi.

C'era già una domanda su questo su SO, ma ha tre anni e le soluzioni sono obsolete. (Al giorno fopen oggi fopen è disabilitato per motivi di sicurezza.)

RecursiveDirectoryIterator è a tua disposizione?

 $bytes = 0; $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)); foreach ($iterator as $i) { $bytes += $i->getSize(); } 

Si può provare l'operatore di esecuzione con il command unix du:

$ output = du -s $folder ;

DA: http://www.darian-brown.com/get-php-directory-size/

Oppure scrivi una function personalizzata per sumre il file di tutti i file nella directory:

 function getDirectorySize($path) { $totalsize = 0; $totalcount = 0; $dircount = 0; if($handle = opendir($path)) { while (false !== ($file = readdir($handle))) { $nextpath = $path . '/' . $file; if($file != '.' && $file != '..' && !is_link ($nextpath)) { if(is_dir($nextpath)) { $dircount++; $result = getDirectorySize($nextpath); $totalsize += $result['size']; $totalcount += $result['count']; $dircount += $result['dircount']; } else if(is_file ($nextpath)) { $totalsize += filesize ($nextpath); $totalcount++; } } } } closedir($handle); $total['size'] = $totalsize; $total['count'] = $totalcount; $total['dircount'] = $dircount; return $total; }