Здравствуйте. Требуется спарсить сайт, на котором порядка 300 изображений. Все эти изображения нужно выгрузить к себе на сервер.
Проблема в том, что из-за такого большого объема данных скрипт падает по тайм-ауту.
Я понимаю, что можно увеличить тайм-аут, но возможно есть более "правильный" способ решить эту проблему?
Заранее благодарен всем отозвавшимся.
Спасибо за ответ. Пробовал, но дело в том, что, вероятно, на моем бесплатном хостинге такое решение ограничено и скрипт все равно падает через 180 секунд.
EvgMul: Ок, есть вариант сделать сделать сложнее - получаете список всех файлов и дальше ajax-ом отправляете на php-файл запрос на скачивание файлов поштучно: один скачался, дергаете второй. Минус в том, что это все будет в браузере, плюс - что умереть это может только в случае, если один конкретный файл будет скачиваться дольше 180 сек.
Если есть опция использовать multi_curl, но, есть у меня подозрение, что на хостинге вашем скрипт помрет из-за чрезмерного расходования памяти.
Такие вещи делаются в командной строке, где нет лимита на время исполнения.
Для удобства написания консольных команд есть, например, Symfony Console, которая позволяет делать такое:
EvgMul: А в чём конкретность вашего случая? Это типичная проблема вопросов на тостере: люди очень плохо описывают задачу, поэтому им часто советуют плохие решения.
Если хостер позволяет крон - парсите страничку, дергаете ссылки на картинки, пишете отдельно(файл/база, не принципиально). Через заданный промежуток выполняете скрипт загрузки 1-2 изображений, ставите статус скачано в сохраненном файлике / базе.
Если крона нет - прийдется открыть скрипт в браузере, добавив рефреш яваскриптом через н секунд/минут.