Workerman की विशेषताएँ

1. शुद्ध PHP विकास

Workerman के द्वारा विकसित अनुप्रयोग बिना php-fpm, apache, nginx जैसे कंटेनरों पर निर्भरता के स्वतंत्र रूप से चल सकते हैं। यह PHP डेवलपर्स के लिए अनुप्रयोग विकसित करना, तैनात करना, और डिबग करना बहुत सुविधाजनक बनाता है।

2. PHP बहु-प्रक्रिया का समर्थन

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

3. TCP, UDP का समर्थन

Workerman TCP और UDP दोनों प्रकार के परिवहन स्तर प्रोटोकॉल का समर्थन करता है, सिर्फ एक प्रॉपर्टी को बदलकर परिवहन स्तर प्रोटोकॉल को बदला जा सकता है, व्यवसाय कोड में कोई बदलाव नहीं होता।

4. लंबी कनेक्शन का समर्थन

कई बार PHP अनुप्रयोगों को क्लाइंट के साथ लंबी कनेक्शन बनाए रखने की आवश्यकता होती है, जैसे कि चैट रूम, खेल आदि, लेकिन पारंपरिक PHP कंटेनर (apache, nginx, php-fpm) ऐसा करना मुश्किल होता है। Workerman का उपयोग करते हुए, जब तक सर्वर के व्यवसाय सक्रिय रूप से कनेक्शन बंद करने के इंटरफ़ेस को नहीं बुलाता, PHP लंबी कनेक्शन का उपयोग कर सकता है। Workerman एकल प्रक्रिया में हजारों समवर्ती कनेक्शन का समर्थन कर सकता है, और बहु-प्रक्रिया दर्जनों हजारों या यहां तक कि लाखों समवर्ती कनेक्शन का समर्थन करता है।

5. विभिन्न एप्लिकेशन स्तर के प्रोटोकॉल का समर्थन

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

6. उच्च समवर्ती को समर्थन

Workerman Libevent इवेंट पोलिंग लाइब्रेरी का समर्थन करता है (जिसे event एक्सटेंशन स्थापित करने की आवश्यकता होती है), Event का उपयोग लंबी कनेक्शन उच्च समवर्ती के दौरान प्रदर्शन बहुत उत्कृष्ट है, यदि Event एक्सटेंशन स्थापित नहीं है तो PHP के अंतर्निहित Select संबंधित सिस्टम कॉल का उपयोग किया जाता है, प्रदर्शन भी बहुत मजबूत है।

7. सेवा को चिकनी रीस्टार्ट का समर्थन

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

8. फ़ाइल अपडेट की जाँच और स्वचालित लोडिंग का समर्थन

विकास के दौरान, हम चाहते हैं कि हमारी कोड में बदलाव तुरंत लागू हो जाए ताकि परिणाम देख सकें। Workerman FileMonitor फ़ाइल मॉनिटरिंग घटक प्रदान करता है, जब भी फ़ाइल में अपडेट होता है, Workerman स्वचालित रूप से reload चलाएगा, जिससे नए फ़ाइल को लोड करके प्रभावी बनाया जा सके।

9. निर्दिष्ट उपयोगकर्ता के तहत उप-प्रक्रियाएँ चलाने का समर्थन

चूँकि उप-प्रक्रियाएँ वास्तविक उपयोगकर्ता अनुरोधों को संभालने वाली प्रक्रियाएँ होती हैं, सुरक्षा के लिए, उप-प्रक्रियाओं की कोई अधिक अनुमति नहीं होनी चाहिए, इसलिए Workerman उप-प्रक्रिया के उपयोगकर्ता को सेट करने का समर्थन करता है, जिससे आपका सर्वर अधिक सुरक्षित हो जाता है।

10. ऑब्जेक्ट या संसाधनों को स्थायी रूप से बनाए रखने का समर्थन

Workerman के चलने के दौरान PHP फ़ाइलों को एक बार लोड और विश्लेषण किया जाएगा, फिर इसे मेमोरी में बनाए रखा जाएगा, जिससे वर्ग और कार्य की घोषणाएँ, PHP निष्पादन वातावरण, प्रतीक तालिका आदि को बार-बार बनाने और नष्ट करने की आवश्यकता नहीं पड़ती। Web कंटेनर के नीचे काम करने वाली PHP प्रक्रिया से यह पूरी तरह से अलग है। Workerman में, एक प्रक्रिया के जीवन चक्र में स्थैतिक सदस्य या वैश्विक चर बिना सक्रिय रूप से नष्ट किए स्थायी रूप से बनाए रहते हैं, यानी ऑब्जेक्ट या कनेक्शन जैसे संसाधनों को वैश्विक चर या वर्ग स्थैतिक सदस्य में रखा जाए तो वर्तमान प्रक्रिया के पूरे जीवन चक्र में सभी अनुरोधों का पुनः उपयोग किया जा सकता है। उदाहरण के लिए, यदि एकल प्रक्रिया के भीतर एक बार डेटाबेस कनेक्शन प्रारंभ किया जाता है, तो आगे के सभी अनुरोध उसी डेटाबेस कनेक्शन का पुनः उपयोग कर सकते हैं, लगातार डेटाबेस से कनेक्ट करते समय TCP के तीन हाथ मिलाने, डेटाबेस अनुमति प्रमाणीकरण, कनेक्शन बंद करते समय TCP के चार हाथ मिलाने की प्रक्रिया से बचा जा सकता है, जिससे अनुप्रयोग की दक्षता में अत्यधिक वृद्धि होती है।

11. उच्च प्रदर्शन

चूँकि PHP फ़ाइलें डिस्क से एक बार पढ़ी जाती हैं और फिर मेमोरी में बनी रहती हैं, अगली बार उपयोग करते समय सीधे मेमोरी में opcode का उपयोग किया जाता है, डिस्क IO और PHP में अनुरोधों का आरंभ, कार्य वातावरण का निर्माण, व्याकरण, व्याकरण विश्लेषण, opcode का संकलन, अनुरोध बंद होने आदि जैसे कई समय लेने वाली प्रक्रियाओं को बहुत कम कर दिया गया है, और यह nginx, apache जैसे कंटेनरों पर निर्भर नहीं करता, जिससे nginx और PHP के बीच संचार का ओवरहेड कम होता है, सबसे महत्वपूर्ण बात यह है कि संसाधन स्थायी रूप से बनाए रखे जा सकते हैं, हर बार डेटाबेस कनेक्शन आदि को प्रारंभ करने की आवश्यकता नहीं होती है, इसलिए Workerman का उपयोग करके अनुप्रयोग विकसित करने पर प्रदर्शन बहुत उच्च होता है।

12. HHVM का समर्थन

HHVM वर्चुअल मशीन पर चलने का समर्थन करता है, जो PHP के प्रदर्शन को कई गुना बढ़ा सकता है। विशेष रूप से CPU गहन गणना व्यवसायों में, प्रदर्शन बहुत उत्कृष्ट है। वास्तविक दबाव परीक्षण की तुलना में, जब कोई लोड व्यवसाय नहीं होता है, तो Workerman HHVM के तहत चलने पर Zend PHP5.6 की तुलना में नेटवर्क थ्रूपुट में 30-80% की वृद्धि प्रदान करता है।

13. वितरित तैनाती का समर्थन

14. डेमन बनावट का समर्थन

15. कई पोर्ट सुनने का समर्थन

16. मानक इनपुट आउटपुट पुनर्निर्देशन का समर्थन