Trabajo en una aplicación web algo grande, y el backend está principalmente en PHP. Hay varios lugares en el código donde necesito completar alguna tarea, pero no quiero que el usuario espere el resultado. Por ejemplo, al crear una nueva cuenta, necesito enviarles un correo electrónico de bienvenida. Pero cuando presionan el botón 'Finalizar registro', no quiero que esperen hasta que se envíe el correo electrónico, solo quiero comenzar el proceso y devolver un mensaje al usuario de inmediato.
Hasta ahora, en algunos lugares he estado usando lo que parece un hack con exec (). Básicamente haciendo cosas como:
exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
Lo que parece funcionar, pero me pregunto si hay una mejor manera. Estoy considerando escribir un sistema que ponga en cola las tareas en una tabla MySQL, y un script PHP independiente de larga duración que consulta esa tabla una vez por segundo y ejecuta cualquier tarea nueva que encuentre. Esto también tendría la ventaja de permitirme dividir las tareas entre varias máquinas de trabajo en el futuro si fuera necesario.
¿Estoy reinventando la rueda? ¿Existe una solución mejor que el hack exec () o la cola MySQL?