फ़ाइल निगरानी घटक
पृष्ठभूमि:
Workerman एक मेमोरी में चलने वाला सर्वर है, जो मेमोरी में चलने के कारण डिस्क को बार-बार पढ़ने और PHP को बार-बार व्याख्या/संकलन से बचता है, ताकि उच्चतम प्रदर्शन प्राप्त किया जा सके। इसलिए व्यवसाय कोड में परिवर्तन के बाद इसे प्रभावी बनाने के लिए मैन्युअल रूप से.reload या.restart करना आवश्यक है।
इसके अलावा, workerman एक फ़ाइल अद्यतन निगरानी सेवा प्रदान करता है, जो फ़ाइल में परिवर्तन का पता लगाने पर स्वचालित रूप से.reload को चलाएगा और PHP फ़ाइल को फिर से लोड करेगा। डेवलपर्स इसे परियोजना में रख सकते हैं और परियोजना के प्रारंभ के साथ इसे चल सकते हैं।
फ़ाइल निगरानी सेवा डाउनलोड पते:
-
निर्भरता-मुक्त संस्करण: https://github.com/walkor/workerman-filemonitor
-
inotify निर्भरता वाला संस्करण: https://github.com/walkor/workerman-filemonitor-inotify (आपको inotify विस्तार स्थापित करने की आवश्यकता है)
दोनों संस्करणों के बीच अंतर:
पता 1 संस्करण फ़ाइल अद्यतन की जांच करने के लिए प्रति सेकंड फ़ाइल अद्यतन समय की घेराबंदी की विधि का उपयोग करता है,
पता 2 लिनक्स कर्नेल inotify तंत्र का उपयोग करता है, जब फ़ाइल अपडेट होती है तो सिस्टम स्वचालित रूप से workerman को सूचित करता है।
आमतौर पर पहले निर्भरता-मुक्त संस्करण का उपयोग करना पर्याप्त है।
उपयोग विधि
Applications/FileMonitor निर्देशिका को अपने प्रोजेक्ट के Applications निर्देशिका में कॉपी करें।
यदि आपके प्रोजेक्ट में Applications निर्देशिका नहीं है, तो आप Applications/FileMonitor/start.php फ़ाइल को अपने प्रोजेक्ट के किसी भी स्थान पर कॉपी कर सकते हैं और इसे स्टार्ट स्क्रिप्ट में.include कर सकते हैं।
निगरानी घटक डिफ़ॉल्ट रूप से Applications निर्देशिका की निगरानी करता है, यदि आप इसे बदलना चाहते हैं, तो Applications/FileMonitor/start.php में $monitor_dir चर को संपादित करें, $monitor_dir का मान पूर्ण पथ होना चाहिए।
ध्यान दें:
- विंडोज सिस्टम.reload का समर्थन नहीं करता है, इस निगरानी सेवा का उपयोग नहीं कर सकता।
- केवल डिबग मोड में यह प्रभावी होता है, डेमन मोड में फ़ाइल निगरानी निष्पादित नहीं होगी (डेमन मोड का समर्थन क्यों नहीं है, इसका नीचे उल्लेख है)।
- केवल उन फ़ाइलों को गर्म अपडेट किया जा सकता है जो Worker::runAll चलाने के बाद लोड की जाती हैं, या कहें कि केवल उन फ़ाइलों को गर्म अपडेट किया जा सकता है जो onXXX कॉलबैक में लोड की जाती हैं।
डेमन मोड का समर्थन क्यों नहीं है?
डेमन मोड सामान्यतः ऑनलाइन पूरी वातावरण में चलने वाले मोड के लिए होता है। आधिकारिक वातावरण में प्रकाशन के समय, आमतौर पर एक बार में कई फ़ाइलों को प्रकाशित किया जाता है, और फ़ाइलों के बीच भी निर्भरता हो सकती है। चूंकि एक से अधिक फ़ाइलों को डिस्क पर समन्वयित होने में समय लगता है, ऐसे समय में डिस्क पर फ़ाइलों का पूरा न होना हो सकता है। यदि इस समय फ़ाइल अद्यतन का पता लगाया जाता है और.reload किया जाता है, तो फाइलें नहीं मिलने के कारण गंभीर त्रुटियों का जोखिम हो सकता है।
इसके अलावा, आधिकारिक वातावरण में कभी-कभी बग का ऑनलाइन समाधान किया जाता है, यदि सीधे कोड को संपादित किया जाता है और सहेजा जाता है, तो यह तुरंत प्रभावी हो जाएगा, जिससे व्याकरण की त्रुटियाँ हो सकती हैं और ऑनलाइन सेवा अनुपलब्ध हो सकती है। सही तरीका यह होना चाहिए कि पहले कोड को सहेजें, फिर php -l yourfile.php के माध्यम से जांचें कि क्या कोई व्याकरण त्रुटियाँ हैं, और फिर.reload करके कोड को गर्म अपडेट करें।
यदि डेवलपर्स वास्तव में डेमन मोड में फ़ाइल निगरानी और स्वचालित अपडेट चालू करना चाहते हैं, तो वे Applications/FileMonitor/start.php कोड को स्वयं संपादित कर सकते हैं, Worker::$daemonize भाग की जांच को हटा सकते हैं।