Каков наилучший способ получить размер каталога в PHP? Я ищу легкий способ сделать это, поскольку каталоги, которые я буду использовать для этого, довольно огромны.
На этом уже был вопрос об этом, но ему три года, и решения устарели. (В настоящее время fopen
отключен по соображениям безопасности.)
Доступен ли ресурс 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; }