PHP कार्य अनुसूचक (Job Scheduler) क्या है?
कार्य अनुसूचक (Job Scheduler) PHP के लिए एक लाइब्रेरी है, जो आपको सिस्टम crond पर निर्भर हुए बिना, एप्लिकेशन कोड से सीधे आवधिक कार्यों (cron‑कार्यों) को निष्पादित करने की अनुमति देती है। यह विशेष रूप से shared‑होस्टिंग पर उपयोगी है, जहाँ crontab तक पहुँच सीमित होती है, या कंटेनरीकृत वातावरण (Docker) में।
कार्य अनुसूचक की आवश्यकता क्यों है?
- स्वायत्तता (Autonomy) — आवधिकता के सभी नियम सिस्टम कॉन्फ़िगरेशन के बजाय PHP कोड में संग्रहीत होते हैं।
- लचीलापन (Flexibility) — आप गतिशील रूप से शेड्यूल बदल सकते हैं, कार्यों को रोक सकते हैं, और निष्पादन को लॉग कर सकते हैं।
- एकीकरण (Integration) — इसे फ्रेमवर्क (Laravel, Symfony) और ORM में आसानी से शामिल किया जा सकता है।
स्थापना (Installation)
Composer के माध्यम से स्थापित करें:
composer require dragonmantank/cron-expressionयह cron‑अभिव्यक्तियों के साथ काम करने के लिए एक बुनियादी लाइब्रेरी है। पूर्ण कार्य अनुसूचक के लिए अक्सर peppeocchi/php-cron-scheduler का उपयोग किया जाता है:
composer require peppeocchi/php-cron-schedulerमुख्य कार्यक्षमताएँ
- cron‑अभिव्यक्तियों का पार्सिंग — जाँच करना कि क्या वर्तमान समय पैटर्न (
* * * * *) से मेल खाता है। - मल्टीटास्किंग — एक ही प्रक्रिया में कई कार्यों को चलाना।
- समानांतरता (Parallelism) —
exec()याpcntl_fork()के माध्यम से। - लॉगिंग — stdout/stderr को फ़ाइल में आउटपुट करना।
- त्रुटि प्रबंधन — पुनः प्रयास, सूचनाएँ।
कोड उदाहरण
<?phprequire 'vendor/autoload.php';
use GO\\Scheduler;
$scheduler = new Scheduler();
// कार्य: हर मिनट$scheduler->call(function() { echo "निष्पादित हो रहा है " . date('Y-m-d H:i:s') . "";})->everyMinute();
// कार्य: हर घंटे 30 मिनट पर$scheduler->call('cleanup_logs')->at('30 * * * *');
// कार्य: कार्यदिवसों पर सुबह 9:00 बजे$scheduler->exec('php artisan report:generate')->at('0 9 * * 1-5');
// सभी तैयार कार्यों को चलाएँ$scheduler->run();कब उपयोग करें
PHP कार्य अनुसूचक इसके लिए आदर्श है:
- शेड्यूल के अनुसार ईमेल न्यूज़लेटर भेजना;
- पुराने डेटा (लॉग, सत्र) को साफ़ करना;
- गैर-व्यस्त घंटों के दौरान रिपोर्ट तैयार करना;
- बाहरी API के साथ सिंक्रोनाइज़ेशन (हर घंटे);
- कैश अपडेट करना (हर 5 मिनट में)।
महत्वपूर्ण सिस्टम संचालन (डेटाबेस बैकअप, सर्टिफिकेट अपडेट) के लिए सिस्टम cron को प्रतिस्थापित न करें — इसे व्यावसायिक तर्क के लिए एक अतिरिक्त परत के रूप में उपयोग करें।
```