dirsize php или du unix

Тема в разделе "PHP", создана пользователем Smile, 23 авг 2013.

Модераторы: latteo
  1. Smile

    Smile

    Регистр.:
    12 ноя 2006
    Сообщения:
    157
    Симпатии:
    11
    Доброе утро,

    посоветуйте какую команду лучше использовать дабы определить размер папки с файлами на сервере, php функцию dirsize или через exec du -sh и записывать логи.

    ПС: папки могут быть огромные, 100+ гб. Интересует быстродействие.

    Спасибо.
     
  2. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    А что такое dirsize? Если обход каталогов {не встроенными} функциями PHP, то du конечно быстрее.
    если нужен конкретный каталог без глубины - в du можно max-depth передать.
     
    Smile нравится это.
  3. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    в php обычно это выглядит, например, так (5.3+) :
    PHP:
    $dir = new RecursiveDirectoryIterator'/path/to/folder'RecursiveDirectoryIterator::SKIP_DOTS );
    $iterator = new RecursiveIteratorIterator$dirRecursiveIteratorIterator::SELF_FIRST );

    $total_size 0;
    foreach( 
    $iterator as $v ){

        if( 
    $v->isFile() ){

            
    $total_size += $v->getSize();
        }
    }

    echo 
    number_format$total_size0''"'" ) . ' bytes';
    но, если права позволяют, быстрее, естественно, через du.. напр. так:
    PHP:
    $base_path '/path/to/folder';
    $handler popen'/usr/bin/du -s ' $base_path'r' );
    $total_size fgets$handler4096 );
    pclose$handler );
    echo 
    number_format$total_size0''"'" ) . ' bytes';
     
  4. stooper

    stooper Shiva

    Moderator
    Регистр.:
    14 апр 2006
    Сообщения:
    534
    Симпатии:
    316
    лучше конечно du записывать. если без du, то можно обойтись скриптом, типа
    и дергать скрипт по крону