मेरे पास एक एकल सर्वर है जो रैक्स स्पेस पर चल रहा है जो एक एकल PHP वेब ऐप होस्ट कर रहा है।PHP के माध्यम से भारी प्रसंस्करण कार्यों के लिए पुश अधिसूचना कतार के रूप में AWS SQS/SNS का उपयोग कैसे करें?
PHP वेब ऐप एक फॉर्म सबमिशन स्वीकार करेगा जिसे फ़ॉर्म फ़ील्ड प्रविष्टियों के आधार पर एक कार्य करने की आवश्यकता है।
कार्य (चलिए इसे जेनरेट मेटाडाटा कार्य कहा जाता है) के लिए बहुत सारे प्रोसेसिंग समय की आवश्यकता होती है। मैं सोच रहा था कि फार्म सबमिशन को डेटाबेस में सीधा सहेजने की अनुमति कैसे दें और पृष्ठभूमि में जेनरेट मेटाडेटा कार्य चलाते समय तुरंत उपयोगकर्ता को सफलता पृष्ठ दिखाएं।
मैंने उसी वेब ऐप में संगीतकार का उपयोग करके "aws/aws-sdk-php": "~3.11"
स्थापित किया है।
कोड कि फ़ॉर्म जमा
$result = $model->save($_POST);
// this code will send the information to either SQS or SNS
$awsClient->sendsMessage($_POST);
if ($result) {
$this->redirect('success.html');
}
मैं fanout architecture एडब्ल्यूएस द्वारा कहा गया के बारे में पढ़ा है संभालता है:
मेरे योजना शुरू में यह है।
फैनआउट वास्तुकला उदाहरण के साथ मेरी मुद्दों (मैं यह समझ के रूप में) इस प्रकार हैं:
- सर्वर या तो SQS या एसएनएस को संदेश भेजता है कि यह भी एक ही सर्वर कि मेटाडाटा उत्पन्न कार्य प्रक्रियाओं हो जाएगा। वास्तव में, यह वही वेब ऐप है।
- एसक्यूएस कतार भाग को पूरा करता है (क्योंकि मैं फीफो में कार्यों को निष्पादित करना चाहता हूं और कार्यों को पूरा करने में काफी समय लगता है)। हालांकि, इसके लिए मेरे वेब ऐप को एसक्यूएस लगातार मतदान करने की आवश्यकता है। मैं निष्पादित करने के लिए कार्यों की जांच करने के लिए लगातार अपने वेब ऐप मतदान एडब्ल्यूएस की बजाय पुश अधिसूचना (एडब्ल्यूएस से अपने वेब ऐप तक) चाहता हूं।
मैंने पाया एक संभव समाधान का सुझाव दिया here
सुझाव दिया समाधान है:
एक एसएनएस विषय के लिए संदेश भेजें।
एसएनएस विषय एक एसक्यूएस कतार और मेरे वेब ऐप दोनों को संदेश देगा।
मेरे वेब अनुप्रयोग, शुरू हो जाने के बाद, एक ही SQS कतार कि है अब कतार जब तक लगातार संदेश पंक्तिबद्ध पोल जाएगा खाली
दोष यह है कि मैं इस से देख रहा है अपने वेब एप्लिकेशन को कतार में संदेश से पहले कतार का चुनाव होगा।
एडब्ल्यूएस सेवाओं का उपयोग करके पुश कतारों को लागू करने का सबसे अच्छा तरीका क्या है?
जी धन्यवाद। मैंने ऐसा नहीं सोचा था। बहुत बढ़िया जवाब! मैं आपको इसके लिए अतिरिक्त 50 अंक देता हूं जब कल बक्षीस खोला जा सकता है। –
क्षमा करें। केवल अब मैंने आपको अतिरिक्त 50 अंक दिए हैं –