php

2011-04-09 3 views
5

का उपयोग कर एकाधिक बीनस्टॉक कार्यकर्ता को कैसे चलाएं, अभी तक, मैं अपने प्रोजेक्ट के लिए केवल एक बीनस्टॉक वर्कर थ्रेड चला रहा हूं, जो क्रॉन आधारित नौकरियों और वास्तविक समय नौकरियों दोनों को संभालता है। तो, मैं इसे दो श्रमिकों में अलग करना चाहता हूं। एक कार्यकर्ता का उपयोग क्रॉन आधारित नौकरियों को ट्रैक करने के लिए किया जाता है और एक और वास्तविक समय असीमित नौकरियों को ट्रैक करने के लिए किया जाता है। इसलिए, कार्यकर्ता दक्षता में सुधार होगा। कोई भी इस पर मेरी मदद कर सकता है,php

  1. php का उपयोग करके एकाधिक बीनस्टॉक श्रमिकों को कैसे चलाया और deamonize?
  2. एकाधिक बीनस्टॉक श्रमिकों को संभालने के लिए नमूना स्क्रिप्ट?

नोट: वर्तमान में मैं फेनस्टॉक PHP lib का उपयोग कर रहा हूं।

+0

और कई ट्यूबों को कैसे देखना है? – karuh24

उत्तर

6

फेनस्टॉक, (या अन्य पुस्तकालयों) के साथ, यदि आप कई कतारों से नौकरियां स्वीकार करना चाहते हैं - बस उन्हें देखें।

$pheanstalk->watch('testtube') 
      ->watch('tube2') 
      ->watch('tube3'); 
$pheanstalk->reserve(); // get the next job from any of the tubes (+ 'default') 

निपटने श्रमिकों के लिए के रूप में, मैं वर्तमान में कुछ बहुत ही इसी तरह की स्क्रिप्ट है कि मैं चलाने के लिए चाहते हैं के लिए Supervisord उपयोग कर रहा हूँ। यह एक पायथन आधारित डिमन है जहां आप जिस स्क्रिप्ट को चलाने के लिए चाहते हैं उसे एक बहुत ही सरल विन्यास फाइल में सूचीबद्ध किया गया है। (अधिक श्रमिक जोड़ना सचमुच एक नंबर बदल रहा है, और कॉन्फ़िगरेशन को फिर से लोड करना)।

एक चीज जो मैंने किया है वह ब्लॉग पोस्ट running-the-worker पर आधारित है। Supervisord एक खोल स्क्रिप्ट चलाता है। वह स्क्रिप्ट PHP चलाती है जो बदले में एक मान देता है (exit($x) के साथ)। अगर मैं कतार-धावक से एक मान वापस करता हूं, (उदाहरण के लिए), 99, मैंने कार्यकर्ता को बंद करने के लिए खोल स्क्रिप्ट छोड़ दी। एक और मूल्य तुरंत कार्यकर्ता को पुनरारंभ कर सकता है, और कुछ भी, इसे फिर से शुरू करने से पहले, कुछ सेकंड के लिए सोता है।

+0

धन्यवाद अलीस्टर। – karuh24

+0

एकाधिक ट्यूब देखने के लिए उपर्युक्त उदाहरण ठीक है। लेकिन उपर्युक्त लिपि कहती है, इसे एक ही कार्यकर्ता स्क्रिप्ट में एकाधिक ट्यूब देखना चाहिए। मान लीजिए कि कोई विशेष ट्यूब पुनरारंभ करना चाहते हैं, तो मैं एक विशेष ट्यूब को कैसे पुनरारंभ करूं? और मैं प्रत्येक ट्यूब को अलग से कैसे प्रबंधित करूं? क्या हमें प्रत्येक ट्यूब के लिए वर्कर स्क्रिप्ट लिखने की ज़रूरत है? यदि हां, तो कई श्रमिकों के लिए स्टार्टअप स्क्रिप्ट के बारे में क्या? मैं init.d में एकाधिक कार्यकर्ता स्क्रिप्ट कैसे प्रबंधित करूं? – karuh24

+0

ट्यूब को पुनरारंभ करके आपका क्या मतलब है? व्यक्तिगत ट्यूबों को देखने के लिए, आप एक ही स्क्रिप्ट को कई बार चलाना चाहते हैं, उदाहरण के लिए, फिर कई श्रमिकों को शुरू करें, और शायद कमांड लाइन पर ट्यूब-नाम को देखने के लिए पास करें। –

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