Как определить размер файла более 4 ГБ средствами PHP?

Итак, собснно, вопрос встал в определении файла более 4 Гб средствами PHP. Встроенная функция filesize() определяет размер файла корректно только до 2 Гб, но при неких манипуляциях можно добиться определения до 4 Гб.
Есть корпоративный хостинг, грубо говоря облако, так что попадаются файлы и под 20-25 Гб.
Находил некий костыль когда-то, который позволяет получать размер файла из консоли через exec(), но мне нужна кросплатфоменность.
Знает ли кто-нибудь подобное решение, или использует класс какой-нибудь? Буду очень благодарен!

UPD:
Есть еще решение под curl, но его я отбросил сразу, ибо он кушает ресурсы, да и время на считывание файла 25Гб будет велико.
  • Вопрос задан
  • 2755 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Заходим в документацию
Замечание: Так как тип integer в PHP является целым числом со знаком и многие платформы используют 32-х битные целые числа, то некоторые функции файловых систем могут возвращать неожиданные результаты для файлов размером больше 2ГБ.


ставим 64x-битную версию php, профит.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
Наверное, это тоже будет костыль, но можно открывать файл с помощью fopen() и считать количество символов-байтов, хоть это и бред. Еще можно попробовать разбить большой файл на много мелких по 2 гб и суммировать уже их размеры, но в этом случае он будет не совсем точным. В общем, ничем не помог, зря ответ писал :)
Ответ написан
hell0w0rd
@hell0w0rd
Просто разработчик
В зависимости от системы можно тащить размер файла. Я думаю du под *nix и команду под WIN будет вполне достаточно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы