ध्यान देने योग्य बातें
टाइमर के उपयोग में ध्यान देने योग्य बातें
-
आप केवल
onXXXXकॉलबैक में टाइमर जोड़ सकते हैं। वैश्विक टाइमर कोonWorkerStartकॉलबैक में सेट करने की सिफारिश की जाती है, जबकि किसी विशिष्ट कनेक्शन के लिए टाइमर कोonConnectमें सेट करने की सिफारिश की जाती है। -
जो टाइमरे कार्य जोड़े गए हैं, वे वर्तमान प्रक्रिया में निष्पादित होते हैं (नई प्रक्रिया या धागे शुरू नहीं किए जाएंगे), भारी कार्य वर्तमान प्रक्रिया में अन्य कार्यों के निष्पादन को प्रभावित कर सकते हैं, इसलिए सबसे अच्छा है कि समय लेने वाले कार्यों को अलग प्रक्रिया में चलाएँ, उदाहरण के लिए एक/एक से अधिक वर्कर प्रक्रियाओं का संचालन करें।
-
यदि वर्तमान प्रक्रिया में swoole/swow सह-क्रम नहीं खोला गया है, और वर्तमान प्रक्रिया अन्य कार्यों में व्यस्त है या जब कोई कार्य निर्धारित समय पर समाप्त नहीं हुआ है, तो जब अगला संचालन चक्र आता है, तो यह वर्तमान कार्य के पूरा होने की प्रतीक्षा करेगा, जिससे टाइमर अपेक्षित समय अंतराल पर नहीं चलेगा। यानी वर्तमान प्रक्रिया के कार्य सीरियल निष्पादित होते हैं, यदि यह बहु-प्रक्रिया है, तो प्रक्रियाओं के बीच कार्यों का संचालन समानांतर होता है।
-
ध्यान देने की आवश्यकता है कि बहु-प्रक्रिया में टाइमर कार्य सेट करना संभावित समकालिक समस्याएँ पैदा कर सकता है, उदाहरण के लिए निम्नलिखित कोड हर सेकंड 5 बार प्रिंट करेगा।
$worker = new Worker(); // 5 प्रक्रियाएँ $worker->count = 5; $worker->onWorkerStart = function(Worker $worker) { // 5 प्रक्रियाएँ, प्रत्येक प्रक्रिया में ऐसा एक टाइमर होता है Timer::add(1, function(){ echo "hi\r\n"; }); }; Worker::runAll();यदि आप केवल एक प्रक्रिया में टाइमर चलाना चाहते हैं, तो Timer::add उदाहरण 2 को देखें।
-
संभावित रूप से 1 मिलीसेकंड के आसपास की गलती हो सकती है।
-
टाइमर को प्रक्रियाओं के बीच हटाया नहीं जा सकता, जैसे a प्रक्रिया द्वारा सेट किया गया टाइमर b प्रक्रिया में सीधे Timer::del इंटरफ़ेस का उपयोग करके हटाया नहीं जा सकता।
-
विभिन्न प्रक्रियाओं के बीच टाइमर आईडी की पुनरावृत्ति हो सकती है, लेकिन एक ही प्रक्रिया के भीतर उत्पन्न टाइमर आईडी की पुनरावृत्ति नहीं होगी।
-
सिस्टम समय में परिवर्तन करने से टाइमर के व्यवहार पर प्रभाव पड़ेगा, इसलिए सिस्टम समय में परिवर्तन करने के बाद पुनः आरंभ करने के लिए पुनरारंभ करने की सिफारिश की जाती है।