Мне нужно получить размер файла размером более 2 ГБ. (тестирование в файле объемом 4,6 ГБ). Есть ли способ сделать это без внешней программы?
Текущее состояние:
-
filesize()
,stat()
иfseek()
терпят неудачу -
fread()
иfeof()
работает
Существует возможность получить размер файла, прочитав содержимое файла (очень медленно!).
$size = (float) 0;
$chunksize = 1024 * 1024;
while (!feof($fp)) {
fread($fp, $chunksize);
$size += (float) $chunksize;
}
return $size;
Я знаю, как получить его на 64-битных платформах (используя fseek($fp, 0, SEEK_END)
и ftell()
), но мне нужно решение для 32-разрядной платформы.
Решение: Я начал проект с открытым исходным кодом для этого.
Инструменты больших файлов
Big File Tools - это набор хаков, необходимых для работы с файлами более 2 ГБ в PHP (даже в 32-разрядных системах).
- ответ: qaru.site/info/214945/...
- github: https://github.com/jkuchar/BigFileTools