PHP कार्य अनुसूचक: पूर्ण मार्गदर्शिका
\n\nकार्य अनुसूचक (Task Scheduler) PHP पर चलने वाले किसी भी वेब एप्लिकेशन के लिए एक महत्वपूर्ण उपकरण है। यह नियमित कार्यों के निष्पादन को स्वचालित करने की अनुमति देता है: ईमेल न्यूज़लेटर भेजना, कैश साफ़ करना, रिपोर्ट तैयार करना, बाहरी API के साथ डेटा सिंक्रोनाइज़ करना और बहुत कुछ। स्क्रिप्ट को मैन्युअल रूप से चलाने के विपरीत, अनुसूचक प्रशासक की भागीदारी के बिना कार्यों का समय पर और विश्वसनीय निष्पादन सुनिश्चित करता है।
\n\nPHP में अनुसूचक को लागू करने के मूल दृष्टिकोण
\n\nPHP प्रोजेक्ट्स में कार्य अनुसूचक को लागू करने के दो मुख्य तरीके हैं:
\n\n- \n
- सिस्टम cron (Linux/Unix) — निर्धारित समय पर PHP स्क्रिप्ट को कॉल करने के लिए अंतर्निहित cron डेमॉन का उपयोग। \n
- उपयोगकर्ता अनुसूचक (Task Scheduler) — लूप और समय जांच का उपयोग करके सीधे PHP कोड में शेड्यूलिंग तर्क को लागू करना। \n
1. PHP के साथ सिस्टम cron
\n\nसबसे सामान्य और कुशल दृष्टिकोण। आप एक PHP स्क्रिप्ट बनाते हैं जो आवश्यक क्रियाएं करती है, और फिर सर्वर के crontab में एक प्रविष्टि जोड़ते हैं।
\n\ncron के लिए PHP स्क्रिप्ट का उदाहरण (cron_job.php):
\n\n<?php\n// cron_job.php - पुराने सत्रों को साफ़ करता है\nrequire_once 'config.php';\nrequire_once 'db.php';\n\n$stmt = $pdo->prepare("DELETE FROM sessions WHERE last_activity < NOW() - INTERVAL 1 DAY");\n$stmt->execute();\n\n// निष्पादन का लॉगिंग\nfile_put_contents('logs/cron.log', date('Y-m-d H:i:s') . " - सत्र साफ़ किए गए\\n", FILE_APPEND);\n?>\n\ncrontab में प्रविष्टि (हर घंटे निष्पादित करें):
\n\n0 * * * * /usr/bin/php /var/www/html/cron_job.php\n\n2. PHP पर उपयोगकर्ता Task Scheduler
\n\nयदि आपके पास सिस्टम cron तक पहुंच नहीं है (उदाहरण के लिए, shared-होस्टिंग पर), तो आप सीधे PHP में एक अनुसूचक लागू कर सकते हैं। इसके लिए एक विशेष स्क्रिप्ट का उपयोग किया जाता है जो साइट पर प्रत्येक विज़िट पर या HTTP अनुरोध पर चलती है।
\n\nसरल अनुसूचक का उदाहरण (task_scheduler.php):
\n\n<?php\nclass TaskScheduler {\n private $tasks = [];\n private $lastRunFile = 'last_run.json';\n\n public function addTask($name, callable $callback, $interval) {\n $this->tasks[] = [\n 'name' => $name,\n 'callback' => $callback,\n 'interval' => $interval // सेकंड में\n ];\n }\n\n public function run() {\n $lastRun = $this->getLastRunTimes();\n\n foreach ($this->tasks as $task) {\n $lastTime = $lastRun[$task['name']] ?? 0;\n if (time() - $lastTime >= $task['interval']) {\n echo "कार्य निष्पादित कर रहा हूँ: {$task['name']}\\n";\n call_user_func($task['callback']);\n $lastRun[$task['name']] = time();\n }\n }\n\n file_put_contents($this->lastRunFile, json_encode($lastRun));\n }\n\n private function getLastRunTimes() {\n if (file_exists($this->lastRunFile)) {\n return json_decode(file_get_contents($this->lastRunFile), true);\n }\n return [];\n }\n}\n\n// उपयोग\n$scheduler = new TaskScheduler();\n\n$scheduler->addTask('send_newsletter', function() {\n // न्यूज़लेटर भेजने का तर्क\n echo "न्यूज़लेटर भेजा गया\\n";\n}, 3600); // हर घंटे\n\n$scheduler->addTask('clean_cache', function() {\n // कैश साफ़ करना\n array_map('unlink', glob('cache/*.cache'));\n echo "कैश साफ़ किया गया\\n";\n}, 86400); // दिन में एक बार\n\n$scheduler->run();\n?>\n\n3. CRON-अभिव्यक्तियों के समर्थन के साथ उन्नत अनुसूचक
\n\nअधिक लचीले शेड्यूल प्रबंधन के लिए, आप क्लासिक cron-अभिव्यक्तियों (मिनट, घंटा, दिन, महीना, सप्ताह का दिन) के लिए समर्थन लागू कर सकते हैं।
\n\ncron-अभिव्यक्ति पार्सर का उदाहरण:
\n\n<?php\nclass CronPar