سطر الأوامر Artisan وإنشاء الأوامر المخصصة (Console Commands)
لقد استخدمنا **Artisan** كثيراً حتى الآن لإنشاء النماذج والمتحكمات، ولكن القوة الحقيقية لسطر الأوامر تظهر عندما تبدأ في كتابة أوامرك الخاصة. تخيل أنك تريد إرسال تقرير بريدي يومي للمديرين، أو تنظيف قاعدة البيانات من الحسابات غير المفعلة؛ بدلاً من كتابة كود PHP وفتحه في المتصفح، يمكنك إنشاء أمر مخصص يتم تنفيذه من سطر الأوامر أو جدولته ليعمل تلقائياً في وقت محدد.
1. إنشاء أمر Artisan مخصص
لإنشاء أمر جديد، نستخدم كالعادة المساعد Artisan. سيقوم الإطار بإنشاء كلاس جديد في مجلد app/Console/Commands.
php artisan make:command SendReminders
2. هيكل كلاس الأمر
يتكون كلاس الأمر من جزئين أساسيين: $signature وهو اسم الأمر الذي ستكتبه في الشاشة، ووظيفة handle() وهي الكود الذي سيتم تنفيذه:
app/Console/Commands/SendReminders.php
// اسم الأمر الاستدعائي
protected $signature = 'app:send-reminders';
// وصف الأمر عند طلب المساعدة
protected $description = 'إرسال تنبيهات بريدية للمستخدمين المتأخرين';
public function handle()
{
// المنطق البرمجي هنا
$this->info('بدأ إرسال التنبيهات...');
// كود إرسال الرسائل
$this->success('تم الانتهاء بنجاح!');
}
3. جدولة المهام (Task Scheduling)
بعد إنشاء أمرك، يمكنك إخبار لارافيل بتشغيله تلقائياً (مثلاً كل يوم في منتصف الليل) عن طريق ملف routes/console.php في Laravel 11:
use Illuminate\Support\Facades\Schedule;
// تشغيل الأمر المخصص يومياً
Schedule::command('app:send-reminders')->daily();
أسئلة شائعة حول أوامر Artisan
نعم، يمكنك تعديل الـ
$signature لاستقبال قيم، مثال: app:send {user_id}. وسيمكنك الوصول للقيمة داخل الكود عبر $this->argument('user_id').
يجب عليك إضافة سطر واحد لملف (Crontab) الخاص بالسيرفر. هذا السطر سيقوم بمناداة لارافيل كل دقيقة، ولارافيل سيفحص بدوره إذا كان هناك مهمة حان وقت تنفيذها أم لا.
الدرس القادم
تحسين الأداء (Optimization)
تطبيقك يعمل، ولكن هل هو سريع؟ سنتعلم أسرار تحسين أداء Laravel من خلال الكاش وتقليص عدد الاستعلامات لتجربة مستخدم خارقة.
تعلم أسرار الأداء