أتمتة المهام الروتينية في PHP: 5 نصوص برمجية قوية ستوفر ساعات من العمل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مساعدك الشخصي في PHP: لماذا الأتمتة هي قوة خارقة



تخيل صباح يوم الاثنين. تأتي إلى المكتب، تفتح حاسوبك المحمول، وكل المهام الروتينية قد أُنجزت بالفعل: النسخ الاحتياطية مرفوعة على الخادم، تم إرسال التذكيرات للعملاء، وتقارير CSV بالأمس تمت معالجتها وتجميعها بشكل جميل في PDF. يبدو هذا كخيال علمي؟ لكنه ليس كذلك.



معظم المطورين في PHP (وليس فقط) يقضون ما يصل إلى 30% من وقت العمل في مهام متكررة ونمطية. الأتمتة في PHP ليست سحرًا، بل استخدام ذكي للوظائف المدمجة وبعض المكتبات. اليوم سأريكم 5 نصوص برمجية حقيقية يمكنكم تشغيلها بعد 10 دقائق فقط من قراءة هذه المقالة.



بالمناسبة، إذا كنت مهتمًا بالأتمتة في Python - لدينا في PythonLib مواد ممتازة. لكننا اليوم نتحدث عن PHP، لأنه لا يزال يهيمن على جانب الخادم (حتى 77% من المواقع تعمل به).



1. التنظيف والأرشفة التلقائية لسجلات النظام القديمة



السجلات تنمو مثل كرة الثلج. بالأمس كان ملف error.log يزن 50 ميجابايت، واليوم أصبح 500. التنظيف اليدوي مؤلم. دعنا نكتب نص PHP برمجي لأتمتة هذه المهمة.



النص البرمجي: LogRotator



<?phpclass LogRotator {    private string $logDir;    private string $archiveDir;    private int $maxFileAgeDays;

public function __construct(string $logDir, string $archiveDir, int $maxFileAgeDays = 30) { $this->logDir = rtrim($logDir, '/'); $this->archiveDir = rtrim($archiveDir, '/'); $this->maxFileAgeDays = $maxFileAgeDays; }

public function rotate(): void { if (!is_dir($this->archiveDir)) { mkdir($this->archiveDir, 0755, true); }

$files = glob($this->logDir . '/*.log'); foreach ($files as $file) { $fileAge = time() - filemtime($file); if ($fileAge > $this->maxFileAgeDays * 86400) { $archiveName = $this->archiveDir . '/' . basename($file) . '.' . date('Ymd') . '.gz'; $gzData = gzencode(file_get_contents($file), 9); file_put_contents($archiveName, $gzData); unlink($file); echo "تمت الأرشفة: " . basename($file) . PHP_EOL; } } }}

// الاستخدام:$rotator = new LogRotator('/var/log/myapp', '/backup/logs/archive');$rotator->rotate();?>


يقوم نص الأتمتة في PHP هذا بثلاثة أشياء: يجد الملفات الأقدم من 30 يومًا، يضغطها بصيغة GZIP، وينقلها إلى الأرشيف. قم بتشغيله عبر CRON مرة في الأسبوع - وانسَ أمر "القرص ممتلئ".



2. إرسال إشعارات بريد إلكتروني مخصصة بشكل جماعي



لنفترض أن لديك متجرًا إلكترونيًا. قام العميل بتقديم طلب، ويحتاج إلى إرسال بريد إلكتروني بالتفاصيل. القيام بذلك يدويًا أمر غبي. أتمتة المهام في PHP باستخدام الدالة المدمجة mail() أو PHPMailer ستحل المشكلة.



مثال: إرسال تذكيرات بسلة التسوق المتروكة



<?phpfunction sendAbandonedCartReminder(string $email, string $customerName, array $items): bool {    $subject = "لقد نسيت سلتك، $customerName! 🛒";        $message = "<h2>مرحبًا، $customerName!</h2>";    $message .= "<p>لقد تركت هذه المنتجات:</p><ul>";        foreach ($items as $item) {        $message .= "<li>{$item['name']} - {$item['price']} روبل.</li>";    }        $message .= "</ul><p><a href='https://yourshop.com/cart'>العودة إلى السلة</a></p>";        $headers = "MIME-Version: 1.0\\r";    $headers .= "Content-Type: text/html; charset=UTF-8\\r";    $headers .= "From: shop@yourshop.com\\r";        return mail($email, $subject, $message, $headers);}

// الإرسال الجماعي:$customers = [ ['email' => 'ivan@example.com', 'name' => 'إيفان']

المدونات

توصيات الكتب