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