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