Если данные не нужны прямо "здесь и сейчас", то можно
1. записать в табличку задания, по каким адресам нужно что-то скачать.
2. запускаем периодически менеджер, который проверяет есть ли незавершенные задания.
2.а если есть, запускаются воркеры, которые пишут в табличку свой PID и время когда они взяли задание в работу
2.б если менеджер видит, что времени прошло слишком много - он килляет воркер по PID и перезапускает.
2.в если воркер отработал нормально - сохраняет данные на диск, пишет время завершения. берет следущее задание, или завершает свою работу.
Если добавить еще немножко наворотов, то получится
guzzle.