मैं कुछ बड़े वेब एप्लिकेशन पर काम करता हूं, और बैकएंड ज्यादातर PHP में है। कोड में कई जगह हैं जहां मुझे कुछ कार्य पूरा करने की आवश्यकता है, लेकिन मैं उपयोगकर्ता को परिणाम के लिए इंतजार नहीं करना चाहता। उदाहरण के लिए, एक नया खाता बनाते समय, मुझे उनका स्वागत ईमेल भेजने की आवश्यकता है। लेकिन जब वे 'समाप्त पंजीकरण' बटन से टकराते हैं, तो मैं उन्हें तब तक इंतजार नहीं करना चाहता जब तक कि ईमेल वास्तव में नहीं भेजा जाता है, मैं बस प्रक्रिया शुरू करना चाहता हूं, और तुरंत उपयोगकर्ता को एक संदेश वापस करना चाहता हूं।
अब तक, कुछ जगहों पर मैं उपयोग कर रहा हूं जो निष्पादन के साथ हैक की तरह महसूस करता है ()। मूल रूप से बातें कर रहे हैं जैसे:
exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
जो काम करने के लिए प्रकट होता है, लेकिन मैं सोच रहा हूं कि क्या कोई बेहतर तरीका है। मैं एक ऐसी प्रणाली लिखने पर विचार कर रहा हूं, जो एक MySQL तालिका में कार्यों को कतारबद्ध करता है, और एक अलग लंबे समय तक चलने वाली PHP स्क्रिप्ट जो उस तालिका को एक बार एक बार क्वेरी करती है, और किसी भी नए कार्यों को निष्पादित करती है। यदि मुझे जरूरत हो तो भविष्य में मुझे कई कार्यकर्ता मशीनों के बीच कार्यों को विभाजित करने देने का भी फायदा होगा।
क्या मैं पहिये का फिर से आविष्कार कर रहा हूँ? क्या निष्पादन () हैक या MySQL कतार से बेहतर समाधान है?