Покинул форум
Сообщений всего: 94
Дата рег-ции: Март 2011
Помог: 1 раз(а)
Представленную ниже функцию использую для получения размера директории, под Windows, но для некоторых папок она выводит отрицательное значение, думал просто домножать значение на " -1", но в итоге оказалось что сам размер очень сильно отличается от реального. Пробовал другие функции проблема такая же...подскажите?))
----- Ubuntu Server 12.04.2 LTS, Apache2, PHP5, MySQL5
EuGen
Отправлено: 12 Апреля, 2011 - 17:14:07
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Возможно, это -
Поскольку PHP использует знаковое представления для чисел целого типа, а многие платформы используют 32-битные целые числа, функция filesize() может возвращать неожиданные значения для файлов, чей размер превосходит 2 Гб. Если размер файла находится в пределах 2 - 4 Гб, корректное значение можно получить, используя конструкцию sprintf("%u", filesize($file)).
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Мелкий
Отправлено: 12 Апреля, 2011 - 17:15:19
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
filesize оперирует значением типа int, притом, знаковым -> предел 2гб.
И суммарная ваша переменная $size наследует это ограничение.
Если устраивает предельное значение размера файла в 2гб, то просто объявите $size как float. Либо переводите в килобайты сразу filesize, перед суммированием.
----- PostgreSQL DBA
Ley4ik_Russia
Отправлено: 12 Апреля, 2011 - 17:16:05
Гость
Покинул форум
Сообщений всего: 94
Дата рег-ции: Март 2011
Помог: 1 раз(а)
EuGen пишет:
Поскольку PHP использует знаковое представления для чисел целого типа, а многие платформы используют 32-битные целые числа, функция filesize() может возвращать неожиданные значения для файлов, чей размер превосходит 2 Гб. Если размер файла находится в пределах 2 - 4 Гб, корректное значение можно получить, используя конструкцию sprintf("%u", filesize($file)).
О...точно в этих директориях присутствуют файлы более 2 Гб...тогда как переделать имеющуюся функцию?
----- Ubuntu Server 12.04.2 LTS, Apache2, PHP5, MySQL5
EuGen
Отправлено: 12 Апреля, 2011 - 17:17:50
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.