Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Функция определения размера директории
 
 автор: jaroslav   (25.02.2007 в 14:00)   письмо автору
 
 

Доброго времени суток!
На Вашем форуме есть скрипт для опредения размера каталогов.

При разборе столкнулся с небольшими трудностями.
Не могу разобраться с функцией opendir ();

Как определить размер папок, которые находятся не в текущем каталоге, а на уровень выше?
Почему не работает функция:

$dir = opendir("../");
$dir = opendir("../users/");

и.т.д.
???


Ниже приведен сам скрипт

// Функция определения размера заданной директории начало

function GetSizeDir($dirname)
{
$size = 0;
// открываем и читаем файлы из директории
$dir = opendir($dirname);
while($file = readdir($dir))
{
if($file == "." || $file == "..")
continue;
// если считанный файл - папка, рекусривно определяем размер этой папки
if(filetype("$dirname/$file") == "dir")
$size += GetSizeDir("$dirname/$file");
// иначе прибавляем к общему размеру размер файла
else
$size += filesize("$dirname/$file");
}
return $size;
}

function GetShortSize($size)
{
// Массив величин
$metr[0] = "Bytes";
$metr[1] = "Kb";
$metr[2] = "Mb";
$metr[3] = "Gb";
$metr[4] = "Tb";

$i = 0;
$newsize = $size;
// пока значение в одной из величин (Байты, Килобайты,
// Мегабайты, Гигабайты, Террабайты) не станет меньшим единицы ...
while(($newsize / 1024) > 1)
{
// делим разер на 2^10
$newsize /= 1024;
// меняем индекс величины
$i++;
}
// формируем строку
return sprintf("%5.2f $metr[$i] ($size bytes)",$newsize);
}


// читаем текущий каталог
$dir = opendir(".");

echo "<pre><table border>\n"
."<tr><td><b>Dir</b></td><td><b>Size</b></td></tr>\n";
while($file = readdir($dir))
{
if($file == "." || $file == "..")
continue;
// если прочитана папка, определяем и выводим её размер
if(filetype($file) == "dir")
echo "<tr><td>$file</td><td>".GetShortSize(GetSizeDir($file))."</td></tr>\n";
}
echo "</table></pre>\n";


// Функция определения размера заданной директории конец

   
 
 автор: cheops   (25.02.2007 в 14:34)   письмо автору
 
   для: jaroslav   (25.02.2007 в 14:00)
 

Уберите последний слеш, вместо
<?php
  $dir 
opendir("../");
  
$dir opendir("../users/");
?>

пишите
<?php
  $dir 
opendir("..");
  
$dir opendir("../users");
?>

   
 
 автор: Jaroslav   (25.02.2007 в 15:09)   письмо автору
 
   для: cheops   (25.02.2007 в 14:34)
 

Идет такая ошибка:

Warning: filetype()


С чем это связано?

   
 
 автор: cheops   (26.02.2007 в 00:39)   письмо автору
 
   для: Jaroslav   (25.02.2007 в 15:09)
 

Как полностью выглядит предупреждение?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования