Автор Тема: Директории/файлы статистика  (Прочитано 5260 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Solid

  • Любитель подемогогить =)
  • Постоялец
  • ***
  • Сообщений: 139
  • +0/-0
  • 2
    • Просмотр профиля
    • http://coding.dyn.ee/
Директории/файлы статистика
« : 31 Января 2002, 16:14:53 »
Нужна функция/скрипт, которая определялобы сколько в директории файлов, в директории, в которой есть ещё директории файлов, сколько эти файлы занимают.

Спасибо, если есть ещё какая нибудь статистика на подобие того что я сказал, то тоже скажите.
..  ..

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Директории/файлы статистика
« Ответ #1 : 01 Февраля 2002, 02:12:32 »
Используй opendir, readdir, is_file, filesize, рекурсивный вызов всего этого набора  и немного фантазии.
Пример накатать?
AS IS...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Директории/файлы статистика
« Ответ #2 : 01 Февраля 2002, 02:29:40 »
Вот что-то типа этого:

<?
/////////////////////////////////////////////////////
//
//  Recursive File size showing by Arcady Babulin aka The0ReTiC
//  mail me to [email]l0g_err@xakep.ru[/email] in any questions
//
////////////////////////////////////////////////////
function FilesizeShowInDir($directory_name)
{
$dirt = @opendir($directory_name);
//chdir($directory_name);
$col 0;
$j 0;
$ND = ARRAY();
while(
$file_handler readdir($dirt)) //Reading directory
{
clearstatcache();
	

if ((
$file_handler !=\'.\')&&($file_handler != \'..\')):

if(is_dir($directory_name.\'/\'.$file_handler)):
	
$nd[$j] = $directory_name.\'/\'.$file_handler;
	
$j++;
	
else: echo\'<i>\'.$directory_name.\'</i> \';
	
echo\'/<b>\'.$file_handler.\'</b>   ->>   \';
echo(filesize($directory_name.\'/\'.$file_handler)).\' Bytes
\';
$col++;
endif; // Is file
endif; // Is not . OR ..
}
echo$col.\' files in this directory\';

if (is_array($nd)){
	
reset($nd);
for($step=0;$step<sizeof($nd);$step++)
{
	
echo$nd[$step].\'
\';
	
FilesizeShowInDir($nd[$step]);
}
} // is array
@closedir($directory_name);
}

FilesizeShowInDir($DOCUMENT_ROOT);

?>

Вроде работает.
У меня весь сайт правильно отобразился.
:)
« Последнее редактирование: 01 Февраля 2002, 02:45:45 от ThE0ReTiC »
AS IS...

Оффлайн Solid

  • Любитель подемогогить =)
  • Постоялец
  • ***
  • Сообщений: 139
  • +0/-0
  • 2
    • Просмотр профиля
    • http://coding.dyn.ee/
Директории/файлы статистика
« Ответ #3 : 01 Февраля 2002, 16:13:27 »
Хмм .. ну тут как бы немного не то, это я в принцепе и сам мог, а вот сделать что бы результат показался всего лишь одинажду, т.е. результат по всем фалам ... некак не выходило.

Т.е. когда в функции функция, и что бы в первой функции сложить переменную со второй переменной которая в другой функции у меня не получалось ... Может ты знаешь как расширить "область видимости"?
..  ..

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Директории/файлы статистика
« Ответ #4 : 01 Февраля 2002, 16:19:27 »
Так. Ты объясни подоробнее, чего тебе надо. А то я чего-то непонял :(
тебе нужен список файлов в директории с объемом каждого, или с суммарным объемом свех файлов, что лежат в диреткории/субдиректории?
AS IS...

Оффлайн Solid

  • Любитель подемогогить =)
  • Постоялец
  • ***
  • Сообщений: 139
  • +0/-0
  • 2
    • Просмотр профиля
    • http://coding.dyn.ee/
Директории/файлы статистика
« Ответ #5 : 01 Февраля 2002, 16:35:02 »
Хе-Хе последнее правильно, просто после школу, не очень врубаюсь не во что ;)) прикольно сказал, короче это .. физика была, ладно не по теме ...

Мне нужно подсчитать объём всех файлов которые лежать в директории и в других подкатегориях, затем следующее, нужно подсчитать сколько мегов, но это уже будет просто сделать, если ты скажешь как подсчитать сколько файлов, а лучше наоборот, скажи как подсчитать мб, я так лучше пойму, просто kakaja_nit_peremennaja++ - слишком просто ;) мне кажется, если я прально понимаю как это всё должно быть, но не врубаюсь как это сделать ;)

Ладно объясни пожалуста.

Требуется найти размер директории, вместе влежащими в это директории файлами и ответ должен быть 1 раз, т.е. вывод и всё, а не:
root -> papka1 -> 4mb
root -> papka2 -> 2mb

Нужно вот так:
root -> 23mb

Методом сложения всех папок.

Можно не в мегах, это я просто люблю это слово, просто в байтах, там отформатировать просто ...

Усё, надеюсь разьяснил понятно.
..  ..

  • Гость
Директории/файлы статистика
« Ответ #6 : 01 Февраля 2002, 17:15:33 »
Люди, задавая такие вопросы на форумах, вы сами никогда ни программировать, ни даже думать-то головой не научитесь...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Директории/файлы статистика
« Ответ #7 : 01 Февраля 2002, 18:21:16 »
2Unregistered Не ворчи. Каждый выражается как может.
Лучше бы зарегистрировался.
« Последнее редактирование: 01 Февраля 2002, 18:28:07 от ThE0ReTiC »
AS IS...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Директории/файлы статистика
« Ответ #8 : 01 Февраля 2002, 18:27:46 »
Так это не сложно :)

<?
/////////////////////////////////////////////////////
//
//  Recursive File size showing by Arcady Babulin aka The0ReTiC
//  mail me to [email]the0retic@mail.ru[/email] in any questions
//
////////////////////////////////////////////////////
function FilesizeShowInDir($directory_name)
{
	
GLOBAL 
$globalism;
$dirt = @opendir($directory_name);
$col 0;
$j 0;
$ND = ARRAY();
while(
$file_handler readdir($dirt)) //Reading directory
{
clearstatcache();
if ((
$file_handler !=\'.\')&&($file_handler != \'..\')):

if(is_dir($directory_name.\'/\'.$file_handler)):
	
$nd[$j] = $directory_name.\'/\'.$file_handler;
	
$j++;
	
else:
$globalism = $globalism +filesize($directory_name.\'/\'.$file_handler);
$col++;
endif; // Is file
endif; // Is not . OR ..
}

if (is_array($nd)){
	
reset($nd);
for($step=0;$step<sizeof($nd);$step++)
{
	
FilesizeShowInDir($nd[$step]);
}
} // is array
@closedir($directory_name);
}
$globalism = 0;
FilesizeShowInDir($DOCUMENT_ROOT);
echo\'
<b>\'.$globalism.\'</b>Bytes\';

?>


Найди десять отличий :):):)
Я проверил в WinCommander - по байтам все сходится. Показывает размер директории, которую укажешь, как параметр функции.
Попробуй.
AS IS...

Оффлайн Solid

  • Любитель подемогогить =)
  • Постоялец
  • ***
  • Сообщений: 139
  • +0/-0
  • 2
    • Просмотр профиля
    • http://coding.dyn.ee/
Директории/файлы статистика
« Ответ #9 : 01 Февраля 2002, 22:52:21 »
Unregistered:
Если ты учишся только сам, то ты полный ...

ThE0ReTiC:
Спасибо, а мог просто написать global, и я бы понял ;)

Кстати, огромное спасибо, только ты отважился мне помочь, зато смотри что получилось: http://coding.dyn.ee/artcles/ , смотри в низу, там где написанно статистика.
« Последнее редактирование: 02 Февраля 2002, 00:27:22 от Solid »
..  ..

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Директории/файлы статистика
« Ответ #10 : 03 Февраля 2002, 20:04:03 »
Всегде пожалста :)
AS IS...

  • Гость
Директории/файлы статистика
« Ответ #11 : 04 Февраля 2002, 16:14:32 »
Нет, я учусь не только сам, но в данном случае разобраться самому - проще простого (и для мозгов полезнее) и будет в 5 раз быстрее, чем спрашивать и ждать ответа.

Оффлайн Vip

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Директории/файлы статистика
« Ответ #12 : 05 Февраля 2002, 16:12:16 »
А если вот ето дописать будет лучше выглядеть
if($globalism<=9999999) {
$t = $globalism / 999;
echo\'
\'.round($t).\' Кб\';
}
elseif($globalism>=10000000) {
$t = $globalism / 999999;
echo\'\'.round($t).\' Мб\';
}
*_*

Оффлайн Solid

  • Любитель подемогогить =)
  • Постоялец
  • ***
  • Сообщений: 139
  • +0/-0
  • 2
    • Просмотр профиля
    • http://coding.dyn.ee/
Директории/файлы статистика
« Ответ #13 : 05 Февраля 2002, 18:58:05 »
Unregistered:
Ну если ты такой умный, умеешь разбираться во всём, то флаг тебе в руки. Просто навсего я не знал одной штуки как GLOBAL, теперь знаю, и в этом помог ThE0ReTiC, за что ему огромное спасибо. А насчёт того что долго ждать ответа, ты не прав, довольнатаки быстро ответ был получен + ещё и скрипт сразу. Зато теперь я могу такой же скрипт написать ;)

Модер, сорри за флейм, он первый начал!
..  ..

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28