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