ازاي توفر وقتك وتعمل أتمتة للمهام اليومية باستخدام PHP CLI
أهلاً بيك يا صديقي المبرمج في عالم الإنتاجية الحقيقية! زهقت من تكرار نفس المهام كل يوم؟ نقل ملفات، مسح مجلدات مؤقتة (Temporary Folders)، تعديل قواعد بيانات، أو حتى إرسال تقارير دورية يدوياً؟ لو إنت مبرمج ويب (Web Developer) وبتستعمل لغة PHP في الشغل، غالباً فاكر إنها مخصصة بس للمواقع والـ APIs. لكن خليني أقولك إن عندك كنز في إيدك اسمه سطر أوامر بي إتش بي أو زي ما بنسميه PHP CLI (Command Line Interface).
في المقال ده، هناخد رحلة مفصلة وعملية جداً عشان نتعلم ازاي نحول سكريات PHP العادية لأدوات قوية لـ أتمتة المهام اليومية (Task Automation) توفر عليك ساعات من الشغل اليدوي الممل.
Table of contents [Show]
- 1 ليه تستخدم PHP CLI في أتمتة المهام (Automation)؟
- 2 الخطوة الأولى: إعداد بيئة العمل والبدء في تشغيل PHP من الـ Terminal
- 3 استقبال المدخلات والمتغيرات من سطر الأوامر (CLI Arguments)
- 4 تطبيق عملي: بناء أداة لترتيب وتنظيف المجلدات تلقائياً (File Organizer Script)
- 5 التعامل مع قواعد البيانات وإرسال التقارير
- 6 نصيحة من أخ: ازاي تطور مهاراتك في الـ PHP CLI؟
ليه تستخدم PHP CLI في أتمتة المهام (Automation)؟
ممكن يجيلك سؤال في دماغك: "ليه أكتب سكريبت أتمتة بـ PHP وأنا عندي بايثون (Python) أو باش (Bash Script)؟" الإجابة ببساطة هي: الخبرة المسبقة. لو إنت شغال PHP Developer، فإنت مش محتاج تتعلم لغة جديدة من الصفر عشان تعمل سكريبت بسيط. عندك بالفعل معرفة بالـ Syntax، وبتعرف تتعامل مع قواعد البيانات (Databases)، وAPIs، وملفات الـ JSON والـ CSV.
استخدام واجهة سطر الأوامر (Command Line Interface) بيخليك تقدر تشغل السكريبت ده في الخلفية، أو تربطه بـ أدوات جدولة زي الـ Cron Jobs في أنظمة لينكس (Linux)، وتنسى تماماً الشغل الروتيني.
الخطوة الأولى: إعداد بيئة العمل والبدء في تشغيل PHP من الـ Terminal
ع عشان تبدأ تكتب سكريبتات سطر أوامر، لازم تتأكد إن الـ PHP متصطبة عندك على الجهاز ومضافة للـ System PATH عشان تقدر تناديها من أي مكان في الـ Terminal أو Command Prompt.
افتح الـ Terminal واكتب الأمر ده عشان تتأكد من النسخة:
php -v
لو ظهرتلك النسخة، فإنت جاهز تماماً. تعالوا نعمل أول سكريبت بسيط خالص. أنشئ ملف جديد وسميه hello.php واكتب فيه الكود ده:
<?php
echo "أهلاً بيك يا بطل في عالم الـ PHP CLI!\n";
?>
عشان تشغل السكريبت ده، افتح الـ Terminal في نفس المكان اللي فيه الملف واكتب:
php hello.php
مبروك! إنت كده شغلت أول سكريبت PHP من غير سيرفر ويب (Apache أو Nginx) ومن غير متصفح!
استقبال المدخلات والمتغيرات من سطر الأوامر (CLI Arguments)
عشان السكريبت بتاعه يكون ذكي ومفيد، لازم يكون تفاعلي. يعني مثلاً، لو عايز تعمل سكريبت ياخد اسم المستخدم ويرحب بيه، هتعمل ده إزاي؟
لغة PHP بتوفرلنا مصفوفة جاهزة اسمها $argv ومصفوفة تاني اسمها $argc. المصفوفة $argv دي بتشيل كل الكلمات اللي بتكتبها في الـ Terminal ورا أمر التشغيل.
شوف المثال العملي ده في ملف greet.php:
<?php
// التأكد من إدخال الاسم
if (!isset($argv[1])) {
echo "من فضلك اكتب اسمك بعد اسم الملف يا صديقي!\n";
echo "مثال: php greet.php أحمد\n";
exit(1);
}
$name = $argv[1];
echo "أهلاً بيك يا " . $name . "، نتمنى لك يوم إنتاجية متميز!\n";
?>
لما تيجي تشغله في الـ Terminal، اكتب كده:
php greet.php محمد
تطبيق عملي: بناء أداة لترتيب وتنظيف المجلدات تلقائياً (File Organizer Script)
تعالوا نعمل مشروع حقيقي ومفيد جداً لأي مبرمج. كتير مننا بيكون عنده مجلد الـ Downloads مليان صور وملفات مضغوطة وبايثون ومستندات والدنيا باظت خالص. هنعمل سكريبت PHP يلف على المجلد ويرتب الملفات دي في فئات بناءً على امتدادها (Extensions).
أنشئ ملف اسمه organizer.php:
<?php
$targetDirectory = isset($argv[1]) ? $argv[1] : getcwd();
if (!is_dir($targetDirectory)) {
echo "المجلد غير موجود!\n";
exit(1);
}
echo "جاري فحص المجلد: " . $targetDirectory . "\n";
$files = scandir($targetDirectory);
foreach ($files as $file) {
if ($file == '.' || $file == '..') continue;
$filePath = $targetDirectory . '/' . $file;
if (is_dir($filePath)) continue; // تجاهل المجلدات الفرعية
$extension = strtolower(pathinfo($filePath, PATHINFO_EXTENSION));
if (empty($extension)) continue;
$categoryDir = $targetDirectory . '/' . strtoupper($extension) . '_Files';
if (!is_dir($categoryDir)) {
mkdir($categoryDir, 0777, true);
}
$destination = $categoryDir . '/' . $file;
rename($filePath, $destination);
echo "تم نقل الملف: $file إلى مجلد " . strtoupper($extension) . "_Files\n";
}
echo "تم الانتهاء من ترتيب المجلد بنجاح!\n";
?>
الأداة البسيطة دي هتوفر عليك وقت كبير جداً في تنظيم ملفاتك الشخصية أو ملفات مشاريعك بضغطة زر واحدة من الـ Terminal.
التعامل مع قواعد البيانات وإرسال التقارير
من أقوى مميزات استخدام برمجة سكريبتات الأتمتة (Automation Scripts) بـ PHP هي قدرتك على الاتصال بقاعدة البيانات (MySQL مثلاً)، أخذ نسخة احتياطية (Backup)، أو فحص السجلات (Logs) وإرسال تقارير بريدية للمدير أو ليك شخصياً.
ممكن تستخدم مكتبات خارجية زي PHPMailer أو تتعامل مع الـ PDO مباشرة جوه الـ CLI بدون أي مشاكل، لأن البيئة واحدة والمكتبات اللي بتستخدمها في الويب هي هي اللي تقدر تستخدمها في الـ CLI.
نصيحة من أخ: ازاي تطور مهاراتك في الـ PHP CLI؟
يا صديقي، الاحتراف بيجي بالتجربة. أبسط طريقة تتعلم بيها هي إنك تبص على المهام المملة اللي بتعملها أكتر من مرتين في يومك، وتفكر فوراً: "هل أقدر أعمل سكريبت PHP يخلص الموضوع ده في ثانية؟". في الأول الموضوع هياخد معاك وقت، بس بعدين هتلاقي نفسك بنيت مجموعة أدوات خاصة بيك (Toolbox) بتسهل عليك شغلك كله وبتخليك مبرمج أسرع وأكثر كفاءة.
كمان ابدأ اقرأ عن مكتبات متقدمة زي Symfony Console Component اللي بتخليك تعمل أوامر متقدمة جداً بـ Options و Arguments وشكل احترافي في الـ Terminal زي أشهر الـ Frameworks العالمية.