Долгоиграющие задачи лучше засовывать в очередь.
Плюсы:
- сразу сможете дать ответ "Принято" на поступивший запрос и предоставить полный ответ с данным позже;
- легко распараллелить по мере роста
- всплески числа одновременных запросов не обрушат систему
- в случае облома исполнения, можно попытаться снова и снова
- можно вообще прекратить обрабатывать, взять выходной и копить задачи, а потом, в понедельник, уж как взяться!.. : )
Реализаций очередей полно готовых. Не обязательно связываться с монструозным Gearman'ом. Можно что-то построить и на
Redis или MySQL. В Laravel
работа с очередями идёт «из коробки».
p.s. «при каждом запросе создавать отдельный процесс?» – загнётся система при пике запросов.