إنشاء المهام وإرسالها
أنشئوا فئة مهمة باستخدام Artisan وأرسلوها من وحدات التحكم
إنشاء المهام وإرسالها درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.
ما هي Job؟
إن job صنف PHP يجسّد وحدة واحدة من العمل الموضوع في Queue. تنفّذ كل Job الطريقة handle() التي يستدعيها عامل Queue لتنفيذ المهمة.
إنشاء Job
استخدم Artisan لإنشاء صنف Job. تجعل العلامة --queue المهمة قابلة للوضع في Queue (وهو الإعداد الافتراضي).
$ php artisan make:job SendWelcomeEmailبنية صنف Job
تحتوي Job على الطريقة handle()، ويمكنها استقبال البيانات عبر الباني.
<?php
namespace App\Jobs;
use App\Models\User;
use App\Mail\WelcomeEmail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\SerializesModels;
class SendWelcomeEmail implements ShouldQueue
{
use Dispatchable, Queueable, SerializesModels;
public function __construct(private User $user) {}
public function handle(): void
{
Mail::to($this->user)->send(new WelcomeEmail($this->user));
}
}إرسال Job إلى Queue
أرسل Job من أي مكان في تطبيقك.
<?php
// Dispatch to queue:
SendWelcomeEmail::dispatch($user);
// Dispatch with delay:
SendWelcomeEmail::dispatch($user)->delay(now()->addMinutes(10));
// Dispatch synchronously (bypass queue):
SendWelcomeEmail::dispatchSync($user);دوال المساعدة للإرسال
يمكنك أيضًا استخدام دالة المساعدة العامة dispatch().
<?php
dispatch(new SendWelcomeEmail($user))
->onQueue("emails")
->delay(now()->addHour());onQueue()
حدّد Queue مسماة بعينها عند الإرسال.
<?php
SendWelcomeEmail::dispatch($user)->onQueue("emails");onConnection()
حدّد اتصال Queue بعينه (مثل SQS لإحدى المهام وRedis لأخرى).
<?php
SendWelcomeEmail::dispatch($user)->onConnection("sqs");تسلسل النماذج
يضمن Trait SerializesModels إجراء تسلسل لنماذج Eloquent التي تُمرّر إلى Job باستخدام المعرّف، ثم إعادة جلبها من قاعدة البيانات بواسطة العامل — لتجنب البيانات القديمة.
afterResponse()
أرسل Job بعد إرسال استجابة HTTP إلى المستخدم — فلن ينتظر المستخدم الوقت اللازم لعملية الإرسال.
<?php
App::terminating(fn () => SendWelcomeEmail::dispatch($user));اختبار Jobs
استخدم Queue::fake() في الاختبارات للتأكد من إرسال Jobs من دون تنفيذها فعليًا.
<?php
Queue::fake();
$this->post("/register", $data);
Queue::assertPushed(SendWelcomeEmail::class);Jobs الفريدة
نفّذ ShouldBeUnique لمنع تراكم Jobs المكررة للبيانات نفسها في Queue.
الملخص
أنشئ Jobs باستخدام Artisan. نفّذ ShouldQueue وhandle(). أرسلها باستخدام ::dispatch(). حدّد Queues باستخدام onQueue(). اختبرها باستخدام Queue::fake().
تحقق سريع
أي واجهة تجعل صنف Job قابلًا للوضع في Queue؟
الأسئلة الشائعة
هل درس «إنشاء المهام وإرسالها» مجاني؟
نعم — نص درس «إنشاء المهام وإرسالها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «إنشاء المهام وإرسالها»؟
أنشئوا فئة مهمة باستخدام Artisan وأرسلوها من وحدات التحكم تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «إنشاء المهام وإرسالها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مفاهيم قوائم الانتظار وبرامج التشغيل
- إنشاء المهام وإرسالها
- إعادة محاولة المهام وتأخيرها وتسلسلها
- مراقبة قوائم الانتظار باستخدام Laravel Horizon