Strict Standards: Resource ID#29 used as offset, casting to integer (29) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#31 used as offset, casting to integer (31) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#32 used as offset, casting to integer (32) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Не могу написать функцию
ТвойWeb » WebMaster класс » PHP/Perl » Не могу написать функцию

Страниц (1): [1]
 

1. Black Stork KCO - 15 Июля, 2007 - 15:14:08 - перейти к сообщению
Приспичило мне тут написать функцию, которая вычисляет весь размер папки

CODE:

function dir_size ($ent)
{
global $size;
$size2=0;

if ($handle = opendir($ent)) {
while (false !== ($file = readdir($handle))) {
if (is_dir($file) && ($file != ".") && ($file != ".."))
dir_size("$ent/$file");
elseif (($file != ".") && ($file != ".."))
$size2+=filesize("$ent/$file");
}
closedir($handle);
}
echo $ent.' '.$size2.'<br>';
$size+=$size2;
}

Вызывается например
dir_size('.');
или
dir_size('forum');
Но она не хочет заходить в поддиректории. В чем касяк?
2. Леголегс - 15 Июля, 2007 - 15:58:00 - перейти к сообщению
А хостинг не на винде случайно? или в денвере запускаешь?
3. Black Stork KCO - 15 Июля, 2007 - 16:14:14 - перейти к сообщению
Леголегс пишет:
А хостинг не на винде случайно? или в денвере запускаешь?

Хостинг линуксовый (если верить phpinfo())
А дома запускаю под виндой. Сервер конфигурировал сам.
4. Black Stork KCO - 15 Июля, 2007 - 16:16:46 - перейти к сообщению
Как выяснил, в некоторые поддиректории заходит. Почему - непонятно. Принцип выбора - тоже непонятен.
5. TvoyWeb - 16 Июля, 2007 - 02:26:03 - перейти к сообщению
Black Stork KCO
CODE:
<?php
function dir_size ($parentdir) {
global $size;
$size2=0;

$d = dir($parentdir);
while (false !== ($file = $d->read())) {
if (is_dir($parentdir."/".$file) && ($file != ".") && ($file != "..")) {
dir_size($parentdir."/".$file);
} elseif (is_file($parentdir."/".$file)) {
$size2+=filesize($parentdir."/".$file);
}
}
$d->close();
echo $parentdir.' '.$size2.'<br>';
$size+=$size2;
}
dir_size (".");
?>

Я обычно пользуюсь встроенным классом dir(). Твоя же ошибка вот здесь is_dir($file).
Нужно либо менять корневую директорию для скрипта, либо дописывать полный абсолютный путь от скрипта.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0266]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33