أتمتة المهام في PHP: 10 أمثلة كود للبرمجة الكسولة

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

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

ابدأ الدورة

لماذا أتمتة الروتين في PHP؟ أو كيف تجعل الكمبيوتر يعمل نيابة عنك

\n\n

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

\n\n

PHP ليست فقط لمواقع الويب. هذه اللغة ممتازة لـ أتمتة المهام في PHP: من إعادة تسمية الملفات البسيطة إلى استخراج بيانات المواقع المعقدة. في هذه المقالة، سأعرض 10 أمثلة عملية ستوفر لك ساعات من العمل. جميع السكربتات جاهزة ومختبرة – خذها واستخدمها.

\n\n

بالمناسبة، إذا كنت تبحث عن حلول جاهزة لـ الأتمتة باستخدام PHP – فقد وصلت إلى المكان الصحيح. هيا بنا!

\n\n

1. إرسال إيميل تلقائي مع مرفق (تقرير PDF)

\n\n

الطلب الأكثر شيوعاً من الشركات: "اجعل التقارير تصل تلقائياً". أدناه سكربت بسيط يرسل بريداً إلكترونياً مع ملف PDF.

\n\n
<?php\nfunction sendReportWithAttachment($to, $subject, $body, $filePath) {\n    $boundary = md5(time());\n    \n    $headers = "MIME-Version: 1.0\\r\\n";\n    $headers .= "From: report@mysite.com\\r\\n";\n    $headers .= "Content-Type: multipart/mixed; boundary=\\"{$boundary}\\"\\r\\n";\n    \n    $message = "--{$boundary}\\r\\n";\n    $message .= "Content-Type: text/plain; charset=utf-8\\r\\n\\r\\n";\n    $message .= $body . "\\r\\n\\r\\n";\n    \n    if (file_exists($filePath)) {\n        $content = file_get_contents($filePath);\n        $content = chunk_split(base64_encode($content));\n        $message .= "--{$boundary}\\r\\n";\n        $message .= "Content-Type: application/pdf; name=\\"" . basename($filePath) . "\\"\\r\\n";\n        $message .= "Content-Disposition: attachment; filename=\\"" . basename($filePath) . "\\"\\r\\n";\n        $message .= "Content-Transfer-Encoding: base64\\r\\n\\r\\n";\n        $message .= $content . "\\r\\n";\n    }\n    \n    $message .= "--{$boundary}--";\n    \n    return mail($to, $subject, $message, $headers);\n}\n\n// الاستخدام:\nsendReportWithAttachment(\n    'boss@company.com',\n    'التقرير اليومي لـ ' . date('d.m.Y'),\n    'مرفق تقرير PDF. التفاصيل في الملف.',\n    '/var/reports/daily_report.pdf'\n);\n?>
\n\n

كيفية الأتمتة: ضع هذا السكربت في cron ليعمل مرة يومياً – وستُرسل التقارير تلقائياً.

\n\n

2. استخراج بيانات موقع وحفظها في CSV

\n\n

لنفترض أنك تريد جمع أسعار المنافسين أو قائمة الوظائف الشاغرة. استخراج البيانات في PHP سهل. استخدم cURL وDOMDocument.

\n\n
<?php\nfunction parseSiteToCSV($url, $cssSelector, $outputFile) {\n    $ch = curl_init();\n    curl_setopt($ch, CURLOPT_URL, $url);\n    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);\n    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)');\n    \n    $html = curl_exec($ch);\n    curl_close($ch);\n    \n    if (!$html) {\n        return false;\n    }\n    \n    $dom = new DOMDocument();\n    @$dom->loadHTML($html);\n    $xpath = new DOMXPath($dom);\n    \n    $items = $xpath->query($cssSelector);\n    \n    $file = fopen($outputFile, 'w');\n    fputcsv($file, ['النص', 'الرابط']);\n    \n    foreach ($items as $item) {\n        $text = trim($item->textContent);\n        $link = $item->getAttribute('href') ?: '—';\n        fputcsv($file, [$text, $link]);\n    }\n    \n    fclose($file);\n    return true;\n}\n\n// مثال: استخراج عناوين الأخبار من موقع\nparseSiteToCSV(\n    'https://news.ycombinator.com/',\n    '//tr[@class="athing"]/td[@class="title"]/a',\n    'hacker_news_titles.csv'\n);\n?>
\n\n

يمكن تشغيل هذا المثال لـ أتمتة المهام في PHP كل ساعة – وستحصل على بيانات جديدة دون أي نقرة.

\n\n

3. أتمتة

المدونات

توصيات الكتب