स्वचालित अपडेट कैसे काम करते हैं?


28

मुझे आज सुबह एक ईमेल प्राप्त हुआ जिसमें कहा गया कि मेरी वर्डप्रेस साइट स्वचालित रूप से नवीनतम संस्करण में अपडेट हो गई है। मुझे इस फीचर के बारे में पता था लेकिन मैंने हमेशा सोचा कि यह कैसे काम करता है।

PHP स्थायी रूप से चलने वाली प्रक्रिया नहीं है: यह केवल अनुरोध के समय चलती है। जहाँ तक मैं बता सकता हूँ, Wordpress केवल तभी अपडेट कर सकता है जब कोई वेब पेज लोड करता है। लेकिन अद्यतन प्रक्रिया तात्कालिक नहीं है, इसलिए निश्चित रूप से साइट पर जाने वाले उपयोगकर्ता के पास वास्तव में धीमा पृष्ठ लोड होगा।

क्या एक अलग चाल है जो वे स्वचालित अपडेट के लिए उपयोग करते हैं? मैंने सभी जगह खोज की है, लेकिन कोई स्पष्टीकरण नहीं मिला है।


बस सटीक होने के लिए यह तभी अपडेट होगा जब नया मामूली या सुरक्षा अपडेट उदाहरण के लिए 3.8 से 3.8.1 तक जारी किया जाता है, लेकिन जब 3.9 जारी किया जाता है (एक प्रमुख संस्करण अपडेट के रूप में) तो आपको इसे मैन्युअल रूप से करना होगा।
बोरेक

जवाबों:


15

PHP स्थायी रूप से चलने वाली प्रक्रिया नहीं है: यह केवल अनुरोध के समय चलती है। जहाँ तक मैं बता सकता हूँ, Wordpress केवल तभी अपडेट कर सकता है जब कोई वेब पेज लोड करता है। लेकिन अद्यतन प्रक्रिया तात्कालिक नहीं है, इसलिए निश्चित रूप से साइट पर जाने वाले उपयोगकर्ता के पास वास्तव में धीमा पृष्ठ लोड होगा।

क्या एक अलग चाल है जो वे स्वचालित अपडेट के लिए उपयोग करते हैं? मैंने सभी जगह खोज की है, लेकिन कोई स्पष्टीकरण नहीं मिला है।

जिस सिस्टम को आप यहां देख रहे हैं उसे "WP Cron" कहा जाता है। यह वर्डप्रेस में एक पृष्ठभूमि प्रक्रिया प्रणाली है जो घटनाओं को सामान्य प्रसंस्करण के बाहर होने देती है। उन्हें अभी भी उन्हें किक करने के लिए ट्रिगर की आवश्यकता है, लेकिन पृष्ठभूमि प्रक्रिया के कारण वे पृष्ठ भार में हस्तक्षेप नहीं करते हैं।

तो हां, किसी को आपका पेज लोड करना होगा। डिफ़ॉल्ट- filter.php फ़ाइल में बंद, आपको कोड की यह लाइन मिलेगी:

add_action( 'init', 'wp_cron' );

इसलिए, प्रत्येक पृष्ठ लोड पर, wp_cron फ़ंक्शन चलता है। यह फ़ंक्शन wp-शामिल / cron.php पर समाप्त हो गया है और डेटाबेस में अनुसूचित घटनाओं की जांच करने के लिए यह क्या करता है। अगर पृष्ठभूमि में इसे चलाने के लिए कोई प्रक्रिया है, तो इसे फ़ंक्शन स्पॉन_क्रॉन कहते हैं।

स्पॉन क्रोन के ऑपरेशन के दो संभावित तरीके हैं, लेकिन सबसे पहला और सबसे आम है wp_remote_post फ़ंक्शन को wp-cron.php के URL पर खुद से वापस संबंध बनाने के लिए कॉल करना। यह अतिरिक्त HTTP अनुरोध करके, यह सभी वास्तविक कार्य करने के लिए एक और PHP प्रक्रिया शुरू करता है। यह अनुरोध यहां गैर-अवरोधक है, 0.01 सेकंड के टाइमआउट के साथ। तो, यह वास्तव में यहाँ कोई परिणाम नहीं मिलता है। अनुरोध का उद्देश्य पृष्ठभूमि में एक नई प्रक्रिया शुरू करना है। ऐसा करने के बाद, यह बस वापस आ जाता है, इसलिए देखने वाले उपयोगकर्ता को कभी भी कोई देरी नहीं होती है।

Wp-cron.php प्रक्रिया वह है जो वास्तविक कार्य, और अद्यतन, और बाकी सब कुछ करती है। वर्डप्रेस में बहुत सारी प्रक्रियाएँ क्रोन प्रणाली द्वारा नियंत्रित की जाती हैं। शेड्यूल्ड पोस्ट पब्लिशिंग, प्रोसेसिंग पिंग्स, अपडेट चेक, कुछ भी जो सामान्य प्रवाह के बाहर होने की जरूरत है, शेड्यूल किया जा सकता है और फिर एक आवश्यक आधार पर चलाया जा सकता है।

लेकिन हां, साइट पर एक सामान्य हिट वास्तव में प्रक्रिया को किक करने के लिए होना चाहिए। और नहीं, WordPress.org चीजों को किक करने के लिए सीधे आपकी साइट से संपर्क नहीं करता है, इसे शुरू करने के लिए आपकी साइट को ट्रैफ़िक का कुछ रूप प्राप्त करना होगा। यातायात का कोई भी रूप होगा।


17

दरअसल, ऑटोमैटिक अपडेट से धक्का दिया जाता है wp.org। अद्यतन प्रक्रिया अभी भी आपकी साइट पर चलती है, लेकिन पृष्ठभूमि के माध्यम से wp-cron

जब एक नया मामूली अपडेट जारी किया जाता है, तो वर्डप्रेस के लोग अपडेट को रोल आउट करना शुरू करते हैं। आपकी साइट wp.orgको अपडेट के लिए जाँचने के बाद वास्तविक अपडेट प्रक्रिया शुरू की जाती है, एक अपडेट सैद्धांतिक रूप से उपलब्ध है, और आपकी साइट को अपडेट करने के लिए यादृच्छिक रूप से चुना जाता है।


(मेरे गलत शब्दों को इंगित करने के लिए धन्यवाद @) :)


जैसा कि हर साइट wp.orgनए संस्करणों (आमतौर पर दिन में दो बार उपयोग करने वाले wp-cron) के साथ जांच करती है , रोलआउटसर्वर जानता है कि कितनी साइटों को अपडेट की आवश्यकता है।

फिर रोलआउट शुरू होता है, धीरे-धीरे शुरू होता है - 128 साइटों में से 1 स्वचालित रूप से अपडेट हो जाता है। इस पर नजर रखी जा रही है, और यदि उत्तराधिकारी रोलआउट के साथ कोई समस्या नहीं दिखाता है, तो अधिक साइटों को स्वचालित अपडेट मिलता है (आमतौर पर अगला चरण 64 में से 1 होगा, और उस तरह से बढ़ना जारी रहेगा) जब तक कि सभी स्वचालित अपडेट वितरित न हो जाएं।

यह डेवलपर्स रोलआउट रोकने देती है, तो किसी भी समस्याओं होते हैं, लेकिन से अंतिम अद्यतन 3.8करने के लिए 3.8.1एक 100% सफलता दर पड़ा है।

चयनित साइट 1 out of 128वास्तव में यादृच्छिक है। खैर, वास्तव में नहीं, लेकिन अगर आप जानना चाहते हैं, तो यह इस तरह से काम करता है:

अपडेट की आवश्यकता वाली साइट के यूआरएल का उपयोग करके हैशड हो जाता है MD5। इस हैश के सिर्फ पहले तीन पात्रों का उपयोग करना और इसे परिवर्तित करना base10, इससे 4096 संभावनाएं बनती हैं। अपडेट 0 और 31 (4096/32 = 128) के बीच परिकलित संख्या वाली साइटों के लिए शुरू हुआ।

ठीक है, मुझे लगता है कि यह बहुत यादृच्छिक है;)

मेरे मामले में, जैसा कि मैंने बहुत सी वर्डप्रेस साइटें चलाई हैं, अपडेट को 1 दिन का लिया गया - यह देखने के लिए बहुत मज़ेदार था कि जब सभी पेज अपडेट किए गए थे।

बस अगर आप सोच रहे थे: डी

btw, यहाँ पर एक लेख है make.wordpress.org प्रक्रिया का वर्णन करते हुए, जैसा कि हुआ।


यदि यह "आपकी साइट पर wp.org से एक अनुरोध द्वारा शुरू किया गया है", तो यह कैसे सुरक्षित है? क्या कोई आपकी साइट पर अनुरोध नहीं भेज सकता है?
असंतुष्टगीत

दरअसल, मुझे नहीं पता कि यह तकनीकी रूप से कैसे संभाला जाता है। लेकिन मुझे यकीन है कि एक गैर और / या जहां अनुरोध आता है, वहां सुरक्षा जांच होती है।
फिशी

1
@fischi क्या आपको जानकारी मिली थी कि wp.org अपडेट को आरंभ करता है? Wp.org अपडेट शुरू करने या अपडेट के लिए वर्डप्रेस साइट की जाँच करने और फिर अपडेट शुरू करने के बीच एक बड़ा अंतर है अगर wp.org यह बताता है कि अपडेट हैं।
क्राफ्टर

1
यह उत्तर वास्तव में गलत है। अद्यतन प्रक्रिया WordPress.org द्वारा आपकी साइट पर शुरू नहीं की गई है। आपकी साइट को वास्तव में इसे बंद करने के लिए ट्रैफ़िक के कुछ प्रकार की आवश्यकता होती है, लेकिन WordPress.org आपकी साइट को सीधे पिंग नहीं करता है।
ओट्टो

1
ठीक है, लेकिन "wp.org से आपकी साइट पर एक अनुरोध द्वारा शुरू किया गया" गलत है। आपकी साइट अपडेट का अनुरोध करती है, और प्रतिक्रिया आपको बताती है कि कोई अपडेट है या नहीं। यह दूसरा तरीका नहीं है, आपकी साइट को प्रक्रिया शुरू करनी है।
ओट्टो

1

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

यह काम करता है लेकिन समय बहुत सटीक नहीं है। आपकी साइट पर जितना अधिक ट्रैफ़िक होगा वह उतना ही सटीक होगा।

जो लोग बेहतर प्रदर्शन और अधिक सटीक समय प्राप्त करना चाहते हैं, वे आंतरिक क्रोन "प्रक्रिया" वर्डप्रेस को रोक सकते हैं, और टाइमर की जांच को चालू करने के लिए ओएस क्रोन प्रक्रिया का उपयोग कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.