Lavoro su un'applicazione Web piuttosto grande e il backend è principalmente in PHP. Esistono diversi punti nel codice in cui devo completare alcune attività, ma non voglio che l'utente attenda il risultato. Ad esempio, quando creo un nuovo account, devo inviare loro un'e-mail di benvenuto. Ma quando premono il pulsante 'Termina registrazione', non voglio farli aspettare fino a quando l'e-mail non viene effettivamente inviata, voglio solo iniziare il processo e restituire immediatamente un messaggio all'utente.
Fino ad ora, in alcuni punti ho usato quello che sembra un hack con exec (). Fondamentalmente facendo cose come:
exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
Il che sembra funzionare, ma mi chiedo se c'è un modo migliore. Sto pensando di scrivere un sistema che mette in coda le attività in una tabella MySQL e uno script PHP di lunga durata separato che interroga quella tabella una volta al secondo ed esegue tutte le nuove attività che trova. Ciò avrebbe anche il vantaggio di permettermi di dividere i compiti tra più macchine di lavoro in futuro, se necessario.
Sto reinventando la ruota? Esiste una soluzione migliore dell'hack exec () o della coda MySQL?