के साथ बीनस्टॉकड कैसे सेट करें हाल ही में मैं PHP के साथ बीनस्टॉकड के उपयोग की खोज कर रहा हूं। मैं काफ़ी सीखा है लेकिन एक सर्वर पर सेटअप के बारे में कुछ प्रश्न हैं, आदिPHP
यहाँ कैसे मैं इसे काम करते हुए देखना है:
- मैं Beanstalkd और (जैसे libevent के रूप में) किसी भी निर्भरता स्थापित मेरे उबंटू सर्वर पर। मैं फिर बीनस्टॉकड डिमन शुरू करता हूं (जिसे मूल रूप से हर समय चलाना चाहिए)।
- कहीं मेरी वेबसाइट में (जैसे जब कोई उपयोगकर्ता कुछ क्रियाएं करता है, आदि) कार्य Beanstalkd कतार के भीतर विभिन्न ट्यूबों में जोड़ा जाता है।
मेरे पास एक बैश स्क्रिप्ट है (जैसे निम्न एक) जो एक डेमॉन के रूप में चलाया जाता है जो मूल रूप से एक PHP स्क्रिप्ट निष्पादित करता है।
#!/bin/sh php worker.php
4) कार्यकर्ता स्क्रिप्ट ऊपर पंक्तिबद्ध कार्य निष्पादित करने के लिए कुछ इस तरह होगा:
while(1) {
$job = $this->pheanstalk->watch('test')->ignore('default')->reserve();
$job_encoded = json_decode($job->getData(), false);
$done_jobs[] = $job_encoded;
$this->log('job:'.print_r($job_encoded, 1));
$this->pheanstalk->delete($job);
}
अब यहाँ मेरे सवालों से ऊपर सेटअप के आधार पर (जो मुझे ठीक कर लें मैं कर रहे हैं मैं इसके बारे में गलत हूं):
कहें कि मेरे पास किसी डेटाबेस या किसी चीज़ में आरएसएस फ़ीड आयात करने का कार्य है। यदि 10 उपयोगकर्ता इसे एक साथ करते हैं, तो वे सभी "परीक्षण" ट्यूब में कतारबद्ध होंगे। हालांकि, वे एक समय में केवल एक ही निष्पादित किया जाएगा। क्या एक ही समय में 10 अलग-अलग ट्यूबों को निष्पादित करना बेहतर होगा?
यदि मुझे और ट्यूब की आवश्यकता है, तो क्या इसका मतलब यह भी है कि मुझे 10 कार्यकर्ता स्क्रिप्ट की आवश्यकता होगी? प्रत्येक ट्यूब के लिए सभी घड़ी() फ़ंक्शन में स्ट्रिंग अक्षर के अलावा मूल रूप से एक ही कोड के साथ एक साथ चलते हैं।
यदि मैं उस स्क्रिप्ट को डिमन के रूप में चलाता हूं, तो यह कैसे काम करता है? क्या यह लगातार कार्यकर्ता.एचपीपी स्क्रिप्ट निष्पादित करेगा? वह स्क्रिप्ट तब तक रुक जाती है जब तक कतार सैद्धांतिक रूप से खाली न हो जाए, तो क्या इसे केवल एक बार लात नहीं किया जाना चाहिए? डेमॉन कैसे तय करता है कि वर्कर.एफपी को कितनी बार निष्पादित किया जाए? क्या यह सिर्फ एक सेटिंग है?
धन्यवाद!
लिंक के लिए धन्यवाद! मैं निश्चित रूप से उन पर ध्यान रखूंगा। # 2 के बारे में एक सवाल: उस स्क्रिप्ट को कितनी बार निष्पादित किया जाएगा? क्या यह पूरी तरह से आधारित है कि मेरे पास डेमॉन द्वारा कितनी बार मेरी बैश स्क्रिप्ट निष्पादित की गई है? – joshholat
इसके अलावा, क्या कोई सुविधाजनक तरीका है (कोड स्निपेट या "डैशबोर्ड" चीज़ के माध्यम से) यह देखने के लिए कि सभी निष्पादन क्या है, आदि बीनस्टॉक के साथ? – joshholat
अधिकांश/सभी लाइब्रेरी को आंकड़े, सूची-ट्यूब और स्टेट-ट्यूब आदेशों पर कॉल प्रदान करना चाहिए। कुछ अन्य भी हैं। मैंने https://github.com/andreisavu/django-jack को नहीं देखा है, लेकिन यह कुछ चीजें भी कर सकता है। –