Получаете файл 2GB внутри PHP? - PullRequest
1 голос
/ 21 июля 2010

Мне нужно загрузить очень большой файл через PHP, в прошлый раз, когда я делал это вручную через http, он был размером 2,2 ГБ и занял несколько часов для загрузки. Я бы хотел как-то автоматизировать загрузку.

Ранее я использовал

file_put_contents($filename, file_get_contents($url));

Будет ли это нормально для такого большого файла? Я хочу распаковать файл после загрузки, а затем выполнить анализ различных файлов внутри архива.

Ответы [ 2 ]

5 голосов
/ 21 июля 2010

file_get_contents () удобен для небольших файлов, но совершенно не подходит для больших файлов. Поскольку он загружает весь файл в память, вам нужно 2 ГБ ОЗУ для каждого экземпляра скрипта!

Вместо этого вам следует прибегнуть к использованию old fopen () + fread ().

Кроме того, не отказывайтесь от использования стороннего инструмента загрузки, такого как wget (установлен по умолчанию во многих системах Linux), и создайте задачу cron для его запуска. Возможно, это лучший способ автоматизировать ежедневную загрузку.

0 голосов
/ 21 июля 2010

Вам нужно будет адаптировать свой php.ini для приема файлов большего размера при загрузке и адаптировать лимит использования памяти.

...