Делается таблица с заданиями, куда пишется адрес страницы, которую нужно скачать. Также статус, дата, pid и количество попыток.
Запускаются дочерние процессы
php.net/manual/ru/function.pcntl-fork.php
Они берут задние из таблицы, ставят статус "в работе" и пишут время начала работы и pid.
Если все удачно - пишут статус "готово" и завершают работу.
Если ошибка - пишут соответствующий статус.
Также запускается другой скрипт, который проверяет все эти статусы и даты. Если была ошибка, и прошло сколько-то времени - можно сделать повторную попытку, пока счетчик повторов не достигнет некоей величины.
Если статус "в работе" висит слишком долго - возможно один из парсеров подвис, и нужно кльнуьть его по PID и перезапустить.
Таким образом, можно обработать не только 50 адресов, а и 50000, например.
И да, похоже мы тут изобретаем что-то среднее между
guzzle и
gearman. Можно взять готовое.