Как лучше организовать выполнение фоновых задач на php?
Всем привет. Есть некая длительная по времени задача: отправка почты/смс пользователю после его действия. Когда пользователь совершает действие (нажимает на какую-нибудь кнопку) нужно вынести выполнение задачи в фон, а пользователю написать: "все хорошо, скоро вам придет письмо". Известный мне способ: сохраняем эту задачу где-нибудь (в базе данных или файле) и раз в минуту дергаем специальный скрипт по cron - у. Он и будет заниматься выполнением таких задач. Минус в том, что максимальное время ожидания для пользователя будет 1 минута. Это критично. Я читал про серверы очередей: german, rabbit. На проектах какого масштаба их лучше применять, чтобы не было ситуации "стреляем из пушки по воробьям"? Как посоветуете решить проблему?
используй rabbit, создавай задачу на отправку писем, добавляй её в rabbit и спи спокойно, всё буде тсделано даже если сервер уйдёт в этот момент на перезагрузку. + такие вещи как очередь задач неплохо горизонтально масштабировать если нагрузка будет расти.
Ajax... при клике показывать блок/текст "Все окей, смска ушла", скрываем форму (блокируем submit и т.д.) и обращаться к скрипту отправки, и не надо никаких очередей и ожиданий
Почтовиком письма отправляются по очереди. Если будет много пользователей, то письма все равно будут приходить с задержкой. Почему бы не отправлять письма сразу после нажатия ? Зачем их складывать в очередь ?