2009-10-23 7 views
13

क्या आपबीनस्टॉकड के साथ PHP एसिंक्रोनस प्रोसेसिंग। क्या आप इसकी सिफारिश करते हैं?

PHP में असीमित प्रक्रिया के लिए beanstalkd [http://kr.github.com/beanstalkd/] का उपयोग करने की सलाह देंगे?

मुझे इस lib का उपयोग करने वाले किसी भी व्यक्ति से कुछ प्रतिक्रिया/टिप्पणियां पेशेवर-विपक्ष की आवश्यकता है।

धन्यवाद,

+0

मैं किसी ऐसे व्यक्ति से बीनस्टॉक की दीर्घकालिक स्थिरता पर टिप्पणियां पढ़ने में रुचि रखूंगा जिसने इसे उत्पादन वातावरण में उपयोग किया है –

+0

मुझे भी बहुत रूचि है। – inakiabt

+1

क्या आपने गियरमैन की कोशिश की है? मुझे लगता है कि गियरमैन-PHP समुदाय अधिक सक्रिय है। – mixdev

उत्तर

15

मैं उत्पादन में बीनस्टॉक का उपयोग किया है, और यह भी परीक्षण के माध्यम से यह सरल गए संदेशों के लाखों लोगों की फेंक दिया, जबकि - आम तौर पर एन-जन, लेकिन उत्पादन प्रणाली जब तक मैं छोड़ के माध्यम से यह डाल एक 100,000 कार्यों से अधिक था कंपनी। यह अभी भी चल रहा है, इस मामले में यह लाखों लोगों का होगा - या अधिक, यदि उन्होंने योजना बनाई थी, तो उन्होंने इसका उपयोग आगे बढ़ाया था।

मैं इसकी अनुशंसा करता हूं, क्योंकि इसमें कई उत्कृष्ट अंक हैं।

  • नामित ट्यूबों का उपयोग नौकरियों को वितरित करने के लिए किया जा सकता है। मैं मशीन होस्टनाम के आधार पर एक ट्यूब देखता हूं, जो सीमित है जहां एक कर्मचारी चल रहा होगा - अपलोड की गई फ़ाइलों के लिए उपयोगी जो केवल किसी विशेष सर्वर पर संग्रहीत हैं)।
  • देरी का उपयोग भविष्य की घटनाओं को सेट करने के लिए किया जा सकता है
  • सर्वर के नवीनतम संस्करण भी बिन-लॉगिंग का समर्थन करते हैं, दृढ़ता देते हैं, हालांकि यह कभी मुझ पर क्रैश नहीं हुआ है।

मेरा पहला कार्य मैंने इसे प्रसंस्करण किया था - और अपाचे/mod_php प्रक्रिया के बाहर उस काम को करने से मुझे सर्वर को प्रभावित किए बिना बड़ी छवियों का आकार बदलने की अनुमति मिली (वेबसर्वर को उड़ाना)। हल्के ढंग से लोड कतार के साथ, अपलोड के बाद पृष्ठ को ताज़ा करने से पहले उसने थंबनेल बनाए थे।

कई अन्य संभावित कार्य भी हैं जिन्हें असीमित रूप से संसाधित किया जा सकता है।

केवल एक ही समस्या जो मैंने कभी की है, यह सुनिश्चित कर रहा था कि श्रमिक घटना के बिना पूरा हो जाएं - या कोई भी त्रुटि पकड़ी गई ताकि नौकरी को 'दफन' किया जा सके, इस प्रकार यह सुनिश्चित किया जा सके कि नौकरी को कतार में वापस नहीं रखा गया था फिर से चलाने के लिए (और कार्यकर्ता फिर से दुर्घटनाग्रस्त हो)।

श्रमिकों को स्मृति को साफ़ करने के लिए पुनरारंभ करने के बाद भी उपयोगी हो सकता है क्योंकि PHP लंबे समय तक चलने वाली प्रक्रियाओं के लिए कम उपयुक्त है।

+0

कतार से नौकरियों को खींचने और उन्हें निष्पादित करने के लिए क्या उपयोग किया गया था? क्या यह PHP में भी किया गया था? यदि हां, तो क्या कर्मचारियों को System_Daemon जैसे कुछ का उपयोग करके निष्पादित किया गया था या क्या एक क्रॉन नौकरी थी जो हर बार और थोड़ी देर तक दौड़ती थी? अन्य दृष्टिकोण? –

+1

मैं पर्यवेक्षक के साथ एक खोल स्क्रिप्ट शुरू करता हूं, और यह खुद को फिर से चलाता रहता है, एक नई वस्तु की प्रतीक्षा करता है, फिर फिर से जाता है। मेरे ब्लॉग पर कुछ और विवरणों के साथ एक पोस्ट है - http://www.phpscaling.com/2009/06/23/doing-the-work-elsewhere-sidebar-running-the-worker/ –

संबंधित मुद्दे