PHP

Функция для отображения размера файла

Размер файлов в PHP измеряется в байтах, но числа из большого количества цифр для восприятия очень неудобны. На мой взгляд гораздо нагляднее, если размер больших файлов будет отображаться в килобайтах, мегабайтах и так далее. Для этого я нарисовал вот такую вспомогательную функцию:
function bytes2words($size) {
    for($i=0; $i<count($st=array('Кб','Мб','Гб')); $i++) {
        if (($size/=1024)<1024) { $i++; break; }
    }
    return round($size,2).' '.$st[($i-1)];
}

Результаты работы функции:
echo bytes2words(1000).'<br>';              // 0.98 Кб
echo bytes2words(10000).'<br>';             // 9.77 Кб
echo bytes2words(100000).'<br>';            // 97.66 Кб
echo bytes2words(1000000).'<br>';           // 976.56 Кб
echo bytes2words(10000000).'<br>';          // 9.54 Мб
echo bytes2words(100000000).'<br>';         // 95.37 Мб
echo bytes2words(1000000000).'<br>';        // 953.67 Мб
echo bytes2words(10000000000).'<br>';       // 9.31 Гб
echo bytes2words(100000000000).'<br>';      // 93.13 Гб
echo bytes2words(1000000000000).'<br>';     // 931.32 Гб
echo bytes2words(10000000000000).'<br>';    // 9313.23 Гб
echo bytes2words(100000000000000).'<br>';   // 93132.26 Гб

На перспективу можно учесть и терабайты (например, если надо считать не размер файлов, а магистральный трафик в датацентре), для этого в массив наименований надо просто добавить элемент 'Тб'. Тестовый вывод, соответственно, изменится следующим образом:
echo bytes2words(100000000000).'<br>';      // 93.13 Гб
echo bytes2words(1000000000000).'<br>';     // 931.32 Гб
echo bytes2words(10000000000000).'<br>';    // 9.09 Тб
echo bytes2words(100000000000000).'<br>';   // 90.95 Тб

Вспоминается шутка 90-х годов: "Сколько будет дважды два? - А мы покупаем или продаем?". Размер килобайта в функции указан как положено - 1024 байта, все результаты, соответственно, получаются из этого расчета. Если надо считать так, как это делают некоторые особо умные провайдеры, то замените в функции все значения 1024 на 1000.
Теги:
размер, файл
Добавлено: 22 Сентября 2013 03:20:23 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...