PHP – получить размер каталога

Каков наилучший способ получить размер каталога в PHP? Я ищу легкий способ сделать это, поскольку каталоги, которые я буду использовать для этого, довольно огромны.

На этом уже был вопрос об этом, но ему три года, и решения устарели. (В настоящее время fopen отключен по соображениям безопасности.)

Solutions Collecting From Web of "PHP – получить размер каталога"

Доступен ли ресурс RecursiveDirectoryIterator ?

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

Вы можете попробовать выполнить оператор выполнения командой unix du:

$ output = du -s $folder ;

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

Или напишите пользовательскую функцию, чтобы суммировать файлы всех файлов в каталоге:

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