Saya bekerja pada aplikasi web yang agak besar, dan backend kebanyakan dalam PHP. Ada beberapa tempat dalam kode di mana saya perlu menyelesaikan beberapa tugas, tetapi saya tidak ingin membuat pengguna menunggu hasilnya. Misalnya, saat membuat akun baru, saya harus mengirim mereka email selamat datang. Tetapi ketika mereka menekan tombol 'Selesai Pendaftaran', saya tidak ingin membuat mereka menunggu sampai email benar-benar dikirim, saya hanya ingin memulai prosesnya, dan segera mengembalikan pesan kepada pengguna.
Sampai sekarang, di beberapa tempat saya telah menggunakan sesuatu yang terasa seperti hack dengan exec (). Pada dasarnya melakukan hal-hal seperti:
exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
Yang tampaknya berhasil, tapi saya bertanya-tanya apakah ada cara yang lebih baik. Saya sedang mempertimbangkan untuk menulis sebuah sistem yang mengantri tugas-tugas dalam tabel MySQL, dan skrip PHP yang sudah berjalan lama yang menanyakan tabel itu satu kali per detik, dan menjalankan tugas-tugas baru yang ditemukannya. Ini juga akan memiliki keuntungan membiarkan saya membagi tugas di antara beberapa mesin pekerja di masa depan jika saya perlu.
Apakah saya menciptakan kembali roda? Apakah ada solusi yang lebih baik daripada hack exec () atau antrian MySQL?