सामग्री पर जाएं
TubePress — मुफ़्त, स्व-होस्टेड & सक्रिय रूप से अनुरक्षित
डेवलपर संदर्भ

क्रॉन और CLI स्क्रिप्ट

स्यूडो-क्रॉन शेड्यूलर और उन्नत होस्ट के लिए वैकल्पिक कमांड-लाइन स्क्रिप्ट।

TubePress अपना आवर्ती कार्य — रैंकिंग पुनर्गणना, transcode जॉब पोलिंग, फ़ीड आयात, sitemap रिफ्रेश और अधिक — बिना सिस्टम crontab कॉन्फ़िगर किए चलाता है। यह पृष्ठ pseudo-cron, उसे सक्रिय रखने वाले heartbeat, और उन्नत होस्ट के लिए वैकल्पिक command-line स्क्रिप्ट की व्याख्या करता है।

Pseudo-Cron

CronManager एक WordPress-शैली का scheduler है। कार्यों को नाम और अंतराल के साथ पंजीकृत किया जाता है, और CronManager::run() हर पृष्ठ रेंडर के अंत में एक बार कॉल किया जाता है। प्रत्येक कार्य केवल तभी चलता है जब पिछली बार चलाने के बाद पर्याप्त समय बीत चुका हो।

// Register a task (typically from a plugin's boot() method)
CronManager::register('promo_refresh', 600, function () {
    Promo::rebuildCache();   // runs at most every 10 minutes
});

यह किसी भी होस्ट पर सुरक्षित रहने के लिए डिज़ाइन किया गया है:

  • Atomic locking. settings तालिका पर एक conditional UPDATE प्रत्येक रन का दावा करता है, इसलिए दो एक साथ अनुरोध कभी भी एक ही कार्य को दो बार नहीं चला सकते।
  • Persistent timestamps. अंतिम-रन समय settings में (autoload = 0 के साथ) संग्रहीत किए जाते हैं, इसलिए शेड्यूल पुनरारंभ और क्रैश से बचता है — अगला पृष्ठ लोड बस वहीं से शुरू होता है जहाँ छोड़ा था।
  • Automatic backoff. जो कार्य लगातार त्रुटि देता रहता है उसे घातीय रूप से बढ़ते अंतराल (अधिकतम एक घंटे) के साथ पुनः प्रयास किया जाता है जब तक वह ठीक नहीं हो जाता, और सफलता पर विफलता काउंटर रीसेट हो जाता है।

Heartbeat — कोई crontab आवश्यक नहीं

Pseudo-cron केवल तभी चलता है जब पृष्ठ रेंडर हो रहे होते हैं, जो एक नई या कम-ट्रैफिक साइट के लिए समस्या है। TubePress इसे एक self-managed heartbeat से हल करता है: एक हल्की CLI प्रक्रिया (bin/heartbeat.php) जो लगभग हर 50 सेकंड में आपके होम पेज को ping करती है ताकि scheduler बिना किसी विज़िटर के भी चलता रहे।

  • यह PID-guarded है और किसी भी web अनुरोध द्वारा स्वचालित रूप से पुनः शुरू किया जाता है यदि कभी बंद हो जाए — आपको इसे शुरू या निगरानी करने की आवश्यकता नहीं है।
  • रनटाइम पर heartbeat_enabled को 0 सेट करके इसे बंद करें।
यही कारण है कि TubePress shared hosting पर चलता है। Pseudo-cron और heartbeat के बीच, scheduled कार्य बस होता रहता है — कोई crontab -e नहीं, कोई supervisor नहीं, कोई अतिरिक्त सेवाएं नहीं।

Scheduler पर क्या चलता है

कोर और बंडल किए गए प्लगइन अपने स्वयं के कार्य पंजीकृत करते हैं — उदाहरण के लिए CTR स्कोर पुनर्गणना, transcode जॉब डिस्पैच और रिट्राई, फ़ीड आयात, catalogue प्रोसेसिंग, AI अनुवाद जॉब और sitemap रिफ्रेश। जैसे-जैसे आप सबसिस्टम सक्षम करते हैं वे स्वचालित रूप से अपने कार्य जोड़ते हैं; कुछ भी कनेक्ट करने की आवश्यकता नहीं है।

वैकल्पिक CLI स्क्रिप्ट

भारी या एकमुश्त कार्यों के लिए, कुछ command-line स्क्रिप्ट bin/ में शिप होती हैं और सक्षम होस्ट पर मैन्युअल रूप से या वास्तविक crontab से चलाई जा सकती हैं। इनमें लंबे समय तक चलने वाले वर्कर (catalogue डाउनलोड और bulk डिलीशन के लिए) और रखरखाव सहायक शामिल हैं। प्रोजेक्ट रूट से सिस्टम PHP CLI के साथ चलाएं:

php bin/heartbeat.php        # run the heartbeat in the foreground
php bin/catalogue-worker.php # process catalogue download jobs
CLI PHP को web PHP से मिलाएं। CLI स्क्रिप्ट उसी PHP संस्करण से चलाएं जो आपकी साइट उपयोग करती है (8.2 या नया)। संस्करण गार्ड पुराने किसी भी संस्करण पर शुरू होने से मना कर देगा।

वास्तविक crontab का उपयोग (उन्नत)

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

अगले चरण

अभी भी अटके हैं?

अपने डैशबोर्ड से टिकट खोलें और हमारी टीम आपकी मदद करेगी।

लाइव डेमो आज़माएं → TubePress डाउनलोड करें →