आपका व्यक्तिगत सहायक PHP में: क्यों स्वचालन एक महाशक्ति है
\n\nसोमवार सुबह की कल्पना करें। आप कार्यालय आते हैं, लैपटॉप खोलते हैं, और सारी दिनचर्या पहले ही हो चुकी होती है: बैकअप सर्वर पर अपलोड हो चुके हैं, ग्राहकों को अनुस्मारक भेजे जा चुके हैं, और कल की CSV रिपोर्ट पहले ही संसाधित होकर खूबसूरती से PDF में पैक हो चुकी हैं। क्या यह कल्पना जैसा लगता है? लेकिन ऐसा नहीं है।
\n\nPHP डेवलपर्स (और केवल वे ही नहीं) अपने काम के समय का 30% तक एक जैसे, दोहराए जाने वाले कार्यों पर खर्च करते हैं। PHP में स्वचालन कोई जादू नहीं है, बल्कि अंतर्निहित फ़ंक्शन और कुछ लाइब्रेरी का समझदारी से उपयोग है। आज मैं आपको 5 वास्तविक स्क्रिप्ट दिखाऊंगा जिन्हें आप इस लेख को पढ़ने के 10 मिनट बाद ही चला सकते हैं।
\n\nवैसे, अगर आपको Python में स्वचालन में रुचि है - PythonLib पर हमारे पास बेहतरीन सामग्री है। लेकिन आज हम PHP के बारे में बात कर रहे हैं, क्योंकि यह अभी भी सर्वर साइड पर राज करता है (77% तक साइटें इस पर चलती हैं)।
\n\n1. पुराने लॉग का स्वचालित सफाई और संग्रहण
\n\nलॉग बर्फ के गोले की तरह बढ़ते हैं। कल ही error.log फ़ाइल 50 MB थी, और आज 500 MB हो गई है। मैन्युअल सफाई एक दर्द है। आइए इस कार्य के लिए एक PHP स्वचालन स्क्रिप्ट लिखें।
\n\nस्क्रिप्ट: LogRotator
\n\n<?php\nclass LogRotator {\n private string $logDir;\n private string $archiveDir;\n private int $maxFileAgeDays;\n\n public function __construct(string $logDir, string $archiveDir, int $maxFileAgeDays = 30) {\n $this->logDir = rtrim($logDir, '/');\n $this->archiveDir = rtrim($archiveDir, '/');\n $this->maxFileAgeDays = $maxFileAgeDays;\n }\n\n public function rotate(): void {\n if (!is_dir($this->archiveDir)) {\n mkdir($this->archiveDir, 0755, true);\n }\n\n $files = glob($this->logDir . '/*.log');\n foreach ($files as $file) {\n $fileAge = time() - filemtime($file);\n if ($fileAge > $this->maxFileAgeDays * 86400) {\n $archiveName = $this->archiveDir . '/' . basename($file) . '.' . date('Ymd') . '.gz';\n $gzData = gzencode(file_get_contents($file), 9);\n file_put_contents($archiveName, $gzData);\n unlink($file);\n echo "संग्रहित किया गया: " . basename($file) . PHP_EOL;\n }\n }\n }\n}\n\n// उपयोग:\n$rotator = new LogRotator('/var/log/myapp', '/backup/logs/archive');\n$rotator->rotate();\n?>\n\nयह PHP स्वचालन स्क्रिप्ट तीन काम करती है: 30 दिन से पुरानी फ़ाइलें ढूंढती है, उन्हें GZIP में संपीड़ित करती है और संग्रह में ले जाती है। इसे सप्ताह में एक बार CRON पर चलाएं - और "डिस्क भर गया" को भूल जाएं।
\n\n2. वैयक्तिकृत ईमेल सूचनाओं का सामूहिक प्रेषण
\n\nमान लीजिए आपके पास एक ऑनलाइन स्टोर है। ग्राहक ने ऑर्डर दिया, और उसे विवरण के साथ एक ईमेल भेजने की आवश्यकता है। इसे मैन्युअल रूप से करना मूर्खता है। अंतर्निहित फ़ंक्शन mail() या PHPMailer का उपयोग करके PHP में कार्यों का स्वचालन समस्या का समाधान करेगा।
उदाहरण: परित्यक्त कार्ट के अनुस्मारक का प्रेषण
\n\n<?php\nfunction sendAbandonedCartReminder(string $email, string $customerName, array $items): bool {\n $subject = "आप अपनी कार्ट भूल गए, $customerName! 🛒";\n \n $message = "<h2>नमस्ते, $customerName!</h2>";\n $message .= "<p>आपने ये सामान छोड़ दिया:</p><ul>";\n \n foreach ($items as $item) {\n $message .= "<li>{$item['name']} - {$item['price']} रु.</li>";\n }\n \n $message .= "</ul><p><a href='https://yourshop.com/cart'>कार्ट पर वापस जाएं</a></p>";\n \n $headers = "MIME-Version: 1.0\\r\\n";\n $headers .= "Content-Type: text/html; charset=UTF-8\\r\\n";\n $headers .= "From: shop@yourshop.com\\r\\n";\n \n return mail($email, $subject, $message, $headers);\n}\n\n// सामूहिक प्रेषण:\n$customers = [\n ['email' => 'ivan@example.com', 'name' => 'इवान']