Laravel 11 / Foundation\Bus PendingChain::dispatch()

laravel 11 pending chain dispatch
30 آذر 1403

توضیح درباره PendingChain در Laravel 11

لاروِل یکی از فریمورک‌های محبوب PHP است که به توسعه‌دهندگان کمک می‌کند سریع‌تر و راحت‌تر کد بنویسند. یکی از قابلیت‌های برجسته این فریمورک، مدیریت صف‌ها (Queues) است که به شما امکان می‌دهد کارهای زمان‌بر را به صورت غیرهمزمان انجام دهید. در اینجا، به بررسی کلاس PendingChain و متد dispatch آن خواهیم پرداخت.

متد PendingChain::dispatch() به شما این امکان را می‌دهد که یک زنجیره از کارها را به صف اضافه کنید. این ویژگی به ویژه زمانی مفید است که شما باید چندین کار را به ترتیب خاصی انجام دهید. مثلاً فرض کنید می‌خواهید یک ایمیل ارسال کنید و پس از آن، داده‌ها را به یک پایگاه‌داده ذخیره کنید. با استفاده از زنجیره‌سازی، شما می‌توانید مطمئن شوید که ابتدا ایمیل ارسال می‌شود و سپس پایگاه‌داده به‌روزرسانی می‌شود.

نحوه کار با PendingChain در Laravel 11 بسیار ساده است. شما تنها کافیست کارهای مختلف خود را به این زنجیره اضافه کنید و سپس آن را با متد dispatch() ارسال کنید. این موضوع نه تنها سازماندهی کد شما را بهبود می‌بخشد، بلکه مدیریت کارها را نیز ساده‌تر می‌کند.

حالا بیایید نگاهی به یک مثال کد بیندازیم تا بهتر متوجه شویم چطور می‌توانیم از این قابلیت استفاده کنیم.

مثال کد PendingChain

use App\Jobs\SendEmailJob;
use App\Jobs\UpdateDatabaseJob;

PendingChain::new()
->add(new SendEmailJob($user))
->add(new UpdateDatabaseJob($user))
->dispatch();

توضیح کد


use App\Jobs\SendEmailJob;
این خط اشاره به استفاده از کلاس SendEmailJob دارد که کار ارسال ایمیل را انجام می‌دهد.

use App\Jobs\UpdateDatabaseJob;
این خط نیز به کلاس UpdateDatabaseJob اشاره دارد که کار به‌روزرسانی پایگاه‌داده را بر عهده دارد.

PendingChain::new()
این خط یک زنجیره جدید از کارها را ایجاد می‌کند.

->add(new SendEmailJob($user))
با این خط، کار ارسال ایمیل به زنجیره اضافه می‌شود.

->add(new UpdateDatabaseJob($user))
همچنین، کار به‌روزرسانی پایگاه‌داده نیز به زنجیره افزوده می‌شود.

->dispatch();
در نهایت، این خط زنجیره کارها را به صف ارسال می‌کند تا به ترتیب اجرا شوند.

سوالات متداول

؟

چه زمانی باید از PendingChain استفاده کنم؟

؟

آیا می‌توانم از PendingChain برای پردازش کارهای زمان‌بر استفاده کنم؟

؟

آیا PendingChain باعث افزایش عملکرد برنامه می‌شود؟