PHP कार्य अनुसूचक: PHP में क्रॉन-जैसा कतार प्रबंधक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP कार्य अनुसूचक: कोड में आवधिक कार्यों का प्रबंधन



आधुनिक वेब डेवलपमेंट में, अक्सर दोहराए जाने वाले कार्यों को करने की आवश्यकता होती है: ईमेल न्यूज़लेटर भेजना, कैश साफ़ करना, रिपोर्ट तैयार करना, बाहरी API के साथ डेटा सिंक्रोनाइज़ करना। परंपरागत रूप से, इसके लिए सिस्टम क्रॉन (crontab) का उपयोग किया जाता है, लेकिन इसके लिए शेल तक पहुँच और सर्वर पर कॉन्फ़िगरेशन की आवश्यकता होती है। PHP कार्य अनुसूचक (Task Scheduler) लाइब्रेरी आपको सीधे PHP एप्लिकेशन में क्रॉन-जैसा व्यवहार लागू करने की अनुमति देती है, बिना crontab को संपादित किए। यह शेयर्ड-होस्टिंग, कंटेनर वातावरण (Docker) या उन परियोजनाओं के लिए एक आदर्श समाधान है जहाँ कोड से लचीली शेड्यूलिंग लॉजिक की आवश्यकता होती है।



मुख्य विशेषताएं



लाइब्रेरी कार्यों और उनके शेड्यूल को परिभाषित करने के लिए एक फ्लुएंट इंटरफ़ेस प्रदान करती है। मुख्य कार्य:



  • लचीली शेड्यूल परिभाषा – क्रॉन एक्सप्रेशन, अंतराल (हर N मिनट, घंटे, दिन), विशिष्ट समय (प्रतिदिन 03:00 बजे) का समर्थन।
  • कमांड और कॉलबैक फ़ंक्शन का निष्पादन – शेल कमांड, क्लास मेथड या अनाम फ़ंक्शन चलाए जा सकते हैं।
  • कतार प्रबंधन – विलंबित निष्पादन के लिए कतारों (जैसे, RabbitMQ, Redis) के साथ एकीकरण।
  • लॉगिंग और सूचनाएं – निष्पादन लॉग के लिए अंतर्निहित समर्थन, ईमेल या Sentry पर त्रुटि भेजना।
  • सुरक्षा – एक ही कार्य के समानांतर निष्पादन को रोकना (mutex)।


स्थापना और कॉन्फ़िगरेशन



स्थापना Composer के माध्यम से की जाती है:



composer require vendor/task-scheduler


स्थापना के बाद, एक scheduler.php फ़ाइल बनाना आवश्यक है, जो सिस्टम क्रॉन (प्रति मिनट एक बार) द्वारा चलाई जाएगी। फ़ाइल के अंदर सभी कार्य कॉन्फ़िगर किए जाते हैं:



<?phprequire_once __DIR__ . '/vendor/autoload.php';

use Scheduler\\Scheduler;use Scheduler\\Task;

$scheduler = new Scheduler();

// कार्य 1: हर 30 मिनट में कैश साफ़ करें$scheduler->add(new Task('cache:clear', function() { // कैश साफ़ करने का लॉजिक echo "Cache cleared at " . date('Y-m-d H:i:s') . PHP_EOL;}), '*/30 * * * *');

// कार्य 2: प्रतिदिन सुबह 9:00 बजे ईमेल न्यूज़लेटर भेजें$scheduler->add(new Task('send:newsletter', 'php artisan newsletter:send'), '0 9 * * *');

// कार्य 3: हर 5 मिनट में स्टैट्स अपडेट करें, लेकिन हर 10 मिनट में एक बार से अधिक नहीं$scheduler->add(new Task('update:stats', function() { // लंबा ऑपरेशन sleep(5);}), '*/5 * * * *', [ 'mutex' => true, // समानांतर निष्पादन से सुरक्षा 'timeout' => 300 // अधिकतम निष्पादन समय (5 मिनट)]);

$scheduler->run();?>


सिस्टम crontab में एक पंक्ति जोड़ी जाती है:



* * * * * php /path/to/scheduler.php >> /dev/null 2>&1


अब PHP स्क्रिप्ट हर मिनट चलेगी और जाँच करेगी कि कौन से कार्य निष्पादित करने हैं।



उपयोग के उदाहरण



1. कॉलबैक के साथ सरल अनुसूचक



<?php$scheduler->add(new Task('greet', function() {    echo "Hello, World!";}), '*/1 * * * *'); // हर मिनट


2. Laravel Artisan कमांड चलाना



<?php$scheduler->add(new Task('reports:generate', 'php artisan reports:generate --force'), '0 2 * * 1'); // हर सोमवार सुबह 2:00 बजे


3. क्रॉन के बजाय अंतराल का उपयोग



<?phpuse Scheduler\\Interval;

$scheduler->add(new Task('backup:db', 'mysqldump -u root db > backup.sql'), Interval::everyHour());// या$scheduler->add(new Task('cleanup:logs', 'rm -rf /var/log/old/*'), Interval::everyDays(7));


4. कतार के माध्यम से विलंबित निष्पादन



<?php$scheduler->add(new Task('process:payments', function() use ($queue) {    $queue->push(new                    

अनुशंसाएँ