लंबे समय तक चलने वाली अतुल्यकालिक नौकरियों का प्रबंधन करते समय सर्वोत्तम अभ्यास


12

मैं एक परियोजना के डिजाइन चरण में हूं, जहां अंतिम उपयोगकर्ता एक वेब पेज से एक अनुरोध प्रस्तुत करेगा जो एक लंबे समय से चल रहे अतुल्यकालिक संसाधित नौकरी को प्रायोजित करेगा। क्या इस समस्या के लिए एक "सर्वोत्तम अभ्यास" है? क्या वेब सेवाएं और सेवा दलाल जाने का एक अच्छा तरीका हैं? क्या Microsoft मैसेजिंग कतार यहां लागू है?


यदि यह वेब पर कर रहा है, और यदि इसमें बहुत लंबा समय लगता है, तो आप इसे पूरा होने पर उपयोगकर्ता को एक पाठ संदेश या एक ईमेल भेज सकते हैं।
नौकरी

जवाबों:


6

मैं "सर्वोत्तम अभ्यास" के बारे में नहीं जानता। मैं सबसे आम गलतियों को जानता हूं।

पहली गलती: डॉस योरसेल्फ

लंबे समय तक चलने वाले काम को संसाधित करने के लिए आप वेबहैंडलर का उपयोग करते हैं। यह आपके हिट के प्रतिशत के आधार पर खराब या बेहद खराब हो सकता है जो लंबे समय तक चलने वाले रोजगार बन जाते हैं, वे कितने समय तक चलते हैं और आपको कितना निरंतर यातायात मिलता है।

आप यह सुनिश्चित करना चाहते हैं कि आपको उस लंबे समय तक चलने वाले काम को पूरा करने में लगने वाले समय के भीतर 1 से अधिक लंबे समय तक चलने वाली नौकरी नहीं मिल रही है। यदि आप अपने आप को डॉस करते हैं। यह भी बदतर हो जाएगा और अधिक यातायात आप प्रतिशत और समय के अनुरूप हो जाता है। यह उन समस्याओं में से एक है जो ट्रैफ़िक के विकास पर एक सीमा लगाती है।

दूसरी गलती: वेबहैंडलर से स्पैनिंग

लंबे समय से चल रही प्रक्रिया को संभालने के लिए वेब हैंडलर से एक प्रक्रिया को बनाना मुश्किल हो सकता है, और इसके परिणामस्वरूप त्रुटि का भी खतरा हो सकता है।

  • आपको माता-पिता से सही तरीके से अलग होना होगा अन्यथा वेबहैंडलर बच्चे के पूरा होने का इंतजार करता है।
  • जब आप एक बच्चे को यूनिक्स में कांटा करते हैं, तो यह माता-पिता से खुले हैंडल विरासत में मिलता है। ये स्वचालित रूप से बंद हो जाएंगे जब तक कि वे अधिलेखित न हों। इसमें डेटाबेस कनेक्शन, फाइलहैंडल, अन्य ओपन नेटवर्क कनेक्शन जैसी चीजें शामिल हैं। बच्चे की प्रक्रिया पूरी होने पर सभी बंद हो जाते हैं।

विकल्प

मैं आमतौर पर उपयोग करने at(1)forking बिना webhandler से सफाई से अलग करने की।

आप के साथ एक मतदान कार्यान्वयन का उपयोग भी कर सकते हैं cron

आप किसी अन्य सर्वर प्रक्रिया के लिए संवाद कर सकते हैं जो प्रसंस्करण को संभालती है। यही कारण है कि संचार के साथ किया जा सकता है sockets, pipesएक बाकी http कॉल या एक कतार संदेश मार्ग की तरह, या उच्च स्तर की कपोल-कल्पना।


2

मुझे लगता है कि आप कुछ मिनटों से ज्यादा बात कर रहे हैं।

यदि यह कुछ मिनटों का है, तो आप पृष्ठभूमि पर एक श्रमिक धागा लॉन्च कर सकते हैं और UI पर कुछ प्रगति प्रदर्शित कर सकते हैं। बहुत सारे वेब एप्लिकेशन उस पद्धति का उपयोग करते हैं।

यदि यह 5 मिनट से अधिक है, तो आप कार्य को एक समर्पित सेवा में सौंपना चाह सकते हैं। एक उदाहरण Google Analytics द्वारा उत्पन्न रिपोर्ट है।

Microsoft मैसेजिंग कतार का उपयोग किसी सिस्टम से जानकारी को दूसरे या एक घटक से दूसरे में भेजने के लिए किया जा सकता है।


PHP जैसी भाषाएं इसे कैसे पूरा करती हैं? मैं कुछ वेब ऐप जानता हूं जो ऐसा करते हैं लेकिन PHP में लिखे गए हैं
TheLQ

मैं कोई PHP विशेषज्ञ नहीं हूं, लेकिन मुझे लगता है कि एक ही पृष्ठ द्वारा लॉन्च किए गए थ्रेड के बजाय, एक और कहा जाता है। यह वास्तव में AJAX के साथ होता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.