Я работаю над довольно большим веб-приложением, а бэкэнд в основном на PHP. В коде есть несколько мест, где мне нужно выполнить какую-то задачу, но я не хочу заставлять пользователя ждать результата. Например, при создании новой учетной записи мне нужно отправить им приветственное письмо. Но когда они нажимают кнопку «Завершить регистрацию», я не хочу заставлять их ждать, пока письмо действительно не будет отправлено, я просто хочу начать процесс и сразу же вернуть сообщение пользователю.
До сих пор в некоторых местах я использовал хак с exec (). В основном делать такие вещи, как:
exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
Который, кажется, работает, но мне интересно, есть ли лучший способ. Я рассматриваю возможность написания системы, которая ставит задачи в очередь в таблице MySQL, и отдельного долгосрочного сценария PHP, который запрашивает эту таблицу раз в секунду и выполняет любые новые задачи, которые он находит. Это также имело бы преимущество, позволяя мне распределить задачи между несколькими рабочими машинами в будущем, если бы мне это было нужно.
Я заново изобретаю колесо? Есть ли лучшее решение, чем взлом exec () или очередь MySQL?