Ошибка использования file_get_contents для загрузки больших файлов - PullRequest
0 голосов
/ 04 августа 2011

Когда я использую file_get_contents с $ offset! = -1 возвращает false Файл, который я хочу получить по URL-адресу, очень большой. Можно ли использовать параметр смещения с нелокальным файлом?

Код, который я использую:

 $content = file_get_contents($encodedurl,false,NULL,$offset,$blocksize);

1 Ответ

1 голос
/ 04 августа 2011

В документации PHP говорится:

Поиск (смещение) не поддерживается с удаленными файлами.Попытка поиска на нелокальных файлах может работать с небольшими смещениями, но это непредсказуемо, потому что оно работает в буферизованном потоке.

Если ваш файл очень большой, то я думаю, что лучшим вариантом будетнаписать свою собственную функцию, которая имитирует HTTP-запрос GET к ресурсу.Затем вы можете прочитать файл в буферизованном виде, таким образом, вы можете сохранить, скажем, 16 МБ, фрагменты файла на диске, и как только он будет полностью загружен, вы всегда можете объединить его в один файл.Или обработайте это как куски как требуется.

...