Biraz büyük bir web uygulaması üzerinde çalışıyorum ve arka uç çoğunlukla PHP'de. Kodda bazı görevleri tamamlamam gereken birkaç yer var, ancak kullanıcıyı sonuç için bekletmek istemiyorum. Örneğin, yeni bir hesap oluştururken onlara hoş geldiniz e-postası göndermem gerekiyor. Ancak 'Kaydı Bitir' düğmesine bastıklarında, e-posta gönderilinceye kadar beklemelerini istemiyorum, sadece işlemi başlatmak ve hemen kullanıcıya bir mesaj göndermek istiyorum.
Şimdiye kadar, bazı yerlerde exec () ile hack gibi hissettiren şeyleri kullanıyorum. Temelde aşağıdaki gibi şeyler yapıyor:
exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
Bu işe yarıyor gibi görünüyor, ama daha iyi bir yol olup olmadığını merak ediyorum. Bir MySQL tablosunda görevleri sıralayan bir sistem ve saniyede bir kez bu tabloları sorgulayan ve bulduğu yeni görevleri yürüten ayrı bir uzun süreli PHP komut dosyası yazmayı düşünüyorum. Bu da, eğer gerekirse, gelecekte birkaç işçi makinesi arasında görevleri bölmeme izin verme avantajına da sahip olacaktı.
Tekerleği yeniden icat ediyor muyum? Exec () kesmek veya MySQL kuyruğundan daha iyi bir çözüm var mı?