Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Определить размер каталога
Форум программистов > Интернет и сети > Web-программирование > PHP программирование
aka_Kail
Проблема..
Надо определить размер каталога с вложенными каталогами..
Могу нацарапать функцию с рекурсией, но!!
каталогов много, и возможны вылеты, и в итоге неправильные данные.
Крон подключать - тоже не то...

ф-ция stat() не помогает (она с каталогами не дружит)...

Если кто нить видел скрипт, определяющий размер каталога - киньте линк, плиииз!



PS на сайте NoNaМыча (http://nnm.ru) есть линк на крякнутый PHPED 5 версии! (~50 mb)
Kачать всем!
@ero
<?
$size = '';
size_of_dir_num('/home/test1.ru');
// вместо /home/test1.ru - путь к директории размер которой надо узнать
function size_of_dir_num($path)
{

$dir = opendir($path);
global $size;
while($d = readdir($dir))
{
if ($d == '.' || $d == '..') continue;
if (is_file($path.'/'.$d))
{
$size = $size + filesize($path.'/'.$d);
}
else if (is_dir($path.'/'.$d)) size_of_dir_num($path.'/'.$d);
}

}
echo ($size / 1024 / 1024);
echo(' mb');
?>
MajestiC
Для: @ero
Читай внимательней, просили без рекурсий.
@ero
интересно и как ты здесь без рекурсии хочешь обойтись?
лично я другого решения ни вижу.

если ты боишься за систему то можно задать глубину рекурсии.
вылетов серьезных не будет.
MajestiC
Для: @ero
Цитата
интересно и как ты здесь без рекурсии хочешь обойтись?
лично я другого решения ни вижу.

Не видишь - не пиши.

Человек же написал:
Цитата
Могу нацарапать функцию с рекурсией, но!!

То есть он ищет возможный вариант решения без рекурсий, именно за ним он и обратился на форум.
Acorn
Для: MajestiC
[offtop] а ты не оффтопь tongue.gif [/offtop]
MajestiC
Для: Acorn
Ну как же без оффтопа =)
aka_Kail
Ребят, спасибо, но тот код я и сам мог нацарапать...
а теперь прикиньте - 400 папок, по 5000 фйлов в каждом???

я думаю попробовать через ftp:// - там есть вроде ф-я для определения размера каталога.
вот только... придётся скрипт на крон вешать на другом сайте - локально , наверно ftp не отработает... =(
zend
Если работаем под *NIX, можно попробовать du. Через какойнить popen...
aka_Kail
А поподробнее? ПЛИИЗ!
aka_Kail
Ага! во! нашёл!
<?
system('du -s /home/www/login/papka');
?>
на вывод - 108 /home/www/login/papka
немного модернизировал - и теперь
<?
system('du -s -h /home/www/login/papka');
?>

на вывод - 108К /home/www/login/papka

то что надо!

ну а уж отделить зёрна от плёвел - плёвое дело biggrin.gif
Спасибо за пинок в нужную сторону..
Думаю тему можно закрыть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.