2010-02-09 22 views
5

क्या पर्ल में एसिंक करने का कोई आसान तरीका है? मैं एक अपाचे अनुप्रयोग के लिए निम्न तर्क है:मैं पर्ल में एसिंक प्रोग्रामिंग का उपयोग कैसे करूं?

get request 
process request 
write to log 
return 

मुझे क्या करना चाहते हैं हिस्सा async होने के लिए, ताकि मैं "वापसी" भाग asap कर सकते हैं "लॉग इन करने के बारे में" है।

+1

क्यों नहीं का उपयोग गैर-अवरुद्ध अपनी स्क्रिप्ट के भाग को लॉग करने के लिए लिखने को संभालने के लिए कॉल? – daotoad

+0

"अपाचे ऐप" से आपका क्या मतलब है? मोड-पर्ल? सीजीआई? PSGI? अपाचे के साथ स्टैंडअलोन पर्ल सर्वर फ्रंट एंड के रूप में? – dolmen

उत्तर

7

दुर्भाग्य से, यह आमतौर पर POE ढांचे में शामिल होता है, लेकिन वहां एक बढ़ता विकल्प भी है (जिसे मैं पहले कोशिश करना चाहता हूं) AnyEvent कहा जाता है।

पीओई सीखने के बारे में अधिक जानकारी के लिए this question for learning materials देखें। पीओई एक ढांचा है और यह आपके पूरे आवेदन को खाने के लिए जाता है। यह को पर्ल की तरह नहीं दिखता है, और बाहर निकलता है। मेरा मानना ​​है कि यह आपके सामान्य अनुप्रयोग के लिए एक बड़ा सीखने की वक्र है।

AnyEvent सरल निरंतरता आधारित असीमित कार्य है, आप इसे केवल सीपीएएन दस्तावेज़ों के साथ काफी अच्छी तरह से समझने में सक्षम होना चाहिए।

अपने विशिष्ट प्रश्न के लिए आप का उपयोग AnyEvent's AIO या POE's Read Write wheel

+0

धन्यवाद, यह सोच रहा था कि क्या मुझे कुछ भी याद आया, लेकिन कोई भी नहीं मिला। चूंकि यह अपाचे ऐप का हिस्सा है, न तो समाधान आकर्षक लगता है। धन्यवाद – Timmy

+2

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

+2

का उपयोग कर सकते हैं AnyEvent POE की तुलना में तेज़ और कम घुसपैठ कर रहा है। एक पूर्व पीओई उपयोगकर्ता से खुद, और अब एक खुश AnyEvent उपयोगकर्ता। – dolmen

3

आप पर्ल में धागे का उपयोग कर सकते हैं। लॉग को संभालते हुए एक थ्रेड बनाएं। इस धागे में एक बफर होगा कि मुख्य धागा

7

Coro पर विचार करने पर विचार करें।

अपने CPAN प्रलेखन से:

तथाकथित "पर्ल धागे" (जो वास्तव में असली धागे लेकिन केवल खिड़कियों प्रक्रिया अनुकरण (अधिक जानकारी के लिए एक ही नाम के खंड देखें नहीं कर रहे हैं के विपरीत) यूनिक्स पर वापस पोर्ट , और प्रक्रियाओं के रूप में इस तरह के कार्य के रूप में), कोरो एक पूर्ण साझा पता स्थान प्रदान करता है, जो धागे के बीच संचार को बहुत आसान बनाता है। और कोरो के थ्रेड भी तेज़ हैं: आपके पर्ल में विंडोज प्रोसेस इम्यूलेशन कोड को अक्षम करना और कोरो का उपयोग करके आपके प्रोग्राम के लिए आसानी से दो से चार गुना तेज वृद्धि हो सकती है। समांतर मैट्रिक्स गुणा बेंचमार्क सभी चार कोरों का उपयोग करके क्वाड कोर पर पर्ल के छद्म-धागे की तुलना में एक सिंगल कोर पर 300 गुना तेजी से चलता है।

इसमें Coro::AIO, "वास्तव में एसिंक्रोनस फ़ाइल और निर्देशिका I/O" शामिल है, जो कि आप जो खोज रहे हैं वह हो सकता है।

6

क्या आपको वास्तव में लौटने से पहले लॉग लिखने की ज़रूरत है?

मान लीजिए यह अपाचे mod_perl है, यह क्लीनअप हैंडलर का समर्थन करता है जो प्रतिक्रिया के बाद बच्चे की प्रक्रिया के लिए ट्रिगर हो जाते हैं।

ऐसा लगता है कि आप वास्तव में चाहते हैं कि लॉगिंग के लिए रिटर्न को न रोकें, क्लीनअप हैंडलर ऐसा लगता है कि एसिंक की आवश्यकता के बिना।

+0

आप शायद सही हैं, लेकिन अभी यह एक खराब डिज़ाइन है, और इसे इस तथ्य का लाभ उठाने के लिए इसकी आवश्यकता है कि इसमें अभी कुछ सरल डेटा है, न केवल एक साधारण लॉगिंग। – Timmy

0

पर्ल (एमसीई) के लिए कई कोर इंजन कई कोरों में समानांतर में मैट्रिक्स गुणा का प्रदर्शन करने वाले कई उदाहरणों के साथ आता है। रीडमे में बेंचमार्क परिणाम भी शामिल हैं।

https://metacpan.org/source/MARIOROY/MCE-1.514/examples/matmult/README

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

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