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

Форум PHP

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

 

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

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

тема: размер папки на FTP-сервере
 
 автор: sashay   (13.02.2007 в 16:23)   письмо автору
 
 

Как определить размер папки вместе с её содержимом по FTP протоколу?

   
 
 автор: cheops   (14.02.2007 в 12:42)   письмо автору
 
   для: sashay   (13.02.2007 в 16:23)
 

Стандартных средств нет, нужно рекурсивно спускаться по дереву каталогов, подсчитывая объём содержимого каждой папки.

   
 
 автор: sashay   (15.02.2007 в 10:25)   письмо автору
 
   для: cheops   (14.02.2007 в 12:42)
 

Да, ну это понятно. Но как тогда организовать рекурсию?

   
 
 автор: cheops   (15.02.2007 в 12:30)   письмо автору
 
   для: sashay   (15.02.2007 в 10:25)
 

Можно воспользоваться следующим решением
<?php
  $ftp_handle 
ftp_connect("XXX.XXX.XXX.XXX");

  if(!@
ftp_login($ftp_handle$account['name_account'], $account['pass'])) exit("Ошибка определения занимаемого объёма");

  
$dir "/"// Идём от корня FTP-аккаунта
  
$global_size 0// байт
  
$global_size get_ftp_size($ftp_handle$dir$global_size);
  echo 
$global_size;

  
ftp_close($ftp_handle);

  
// Функция подсчитывающая число байт, занимаемых директорией $dir
  
function get_ftp_size($ftp_handle$dir$global_size)
  {
    
$file_list ftp_rawlist($ftp_handle$dir);
    if(!empty(
$file_list))
    {
      foreach(
$file_list as $file)
      {
        
// Разбиваем строку по пробельным символам
        
list($acc,
             
$bloks,
             
$group,
             
$user,
             
$size
             
$month
             
$day
             
$year
             
$file) = preg_split("/[\s]+/"$file);
        if(
$acc[0] == 'd' && $file != ".." && $file != ".")
        {
          
$dir_new trim($dir."/".$file,"/");
          
$global_size get_ftp_size($ftp_handle$dir_new$global_size);
        }
        else
        {
          
$global_size += $size;
        }
      }
    }
    return 
$global_size;
  }
?>

   
 
 автор: sashay   (15.02.2007 в 15:58)   письмо автору
 
   для: cheops   (15.02.2007 в 12:30)
 

Большое спасибо cheops, все работает!

   
Rambler's Top100
вверх

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