@isawillbenice

Как можно организовать параллельное скачивание изображений на php?

Задача такая:
В базу данных добавляются урлы с аватарами пользователей, необходимо по этим урлам скачать фотки на сервер. Но когда урлов, например больше 100, скрипт ломается и не может выкачать фотки. Как можно распараллелить такой процесс?
  • Вопрос задан
  • 2736 просмотров
Пригласить эксперта
Ответы на вопрос 5
Комментировать
1. Почему скрипт ломается? Не успевает выкачивать за выделенное php-процессу время? Установите таймаут руками.
2. Запускайте из консоли. Если скрипт ломается по причине 1, распараллеливание не поможет.
Ответ написан
Комментировать
kirillplatonov
@kirillplatonov
Ruby on Rails developer
Постройте очередь из задач на скачивание. Запускайте крон и берите по несколько задач скачивания для 1 процесса. И, надеюсь, вы используете cURL с ограничением timeout для данных задач.
Ответ написан
Комментировать
alekciy
@alekciy
Вёбных дел мастер
100 скачиваний фигня ради которой думать о мультикурле нет смысла. Поэтому можно спокойно качать в обычном однопоточном режиме. И искать ошибку в скрипте (или механизме его запуска). Правильный вариант - запуск в минутных cron-ах.
Ответ написан
@isawillbenice Автор вопроса
Более подробно как реализовано на данный момент. каждые 3 минуты выполняется скрипт, который достает урлы одного пользователя (при тестрирование у одного пользователя их оказалось даже 3000) и циклом с помощью функции copy скачивает фотки. Максимальное время выполнения скрипта установлено 300 секунд. Этого времени не достаточно для скачивания такого количества фоток, но и увеличивать его нельзя, так как нужно максимально уменьшить время ожидания для пользователя
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы