توضیح درباره روش dispatchSync در لاراول ۱۱
در لاراول، سیستم صف و کارهای پسزمینه به شما اجازه میدهند که وظایف سنگین را در پسزمینه اجرا کرده و بهبود عملکرد برنامه خود را تجربه کنید. یکی از روشهای موجود برای اجرای چنین وظایفی، روش dispatchSync
است. این متد به شما این امکان را میدهد که یک کار را به صورت همزمان، بدون اینکه در صف قرار بگیرد، اجرا کنید.
استفاده از dispatchSync
به این معناست که کار به محض فراخوانی اجرا میشود و بلافاصله نتیجه آن به کد اصلی برمیگردد. این ویژگی زمانی مفید واقع میشود که بخواهید یک کار را اجرا کنید و منتظر بمانید تا جواب آن را بگیرید و سپس به مراحل بعدی برنامهتان بروید.
لاکچری بودن این روش این است که شما از مزایای صف استفاده نمیکنید، یعنی تا زمانی که کار اجرا نشده است، برنامه شما منتظر میماند. بنابراین، اگر کار شما به زمان زیادی نیاز دارد، ممکن است باعث کند شدن عملکرد برنامه گردد.
در این مقاله، ما به شما نشان خواهیم داد که چگونه میتوانید از dispatchSync
در لاراول ۱۱ استفاده کنید و همچنین یک مثال عملی به شما ارائه میدهیم. این مثال شامل یک کار ساده خواهد بود که اطلاعات را پردازش میکند و نتیجه را به صفحه اصلی برمیگرداند.
نمونه کد
use App\Jobs\MyJob;
$result = MyJob::dispatchSync($data);
// استفاده از نتیجه پس از اجرای کار
return view('result', ['result' => $result]);
توضیح کد
استفاده از کلاس Job:
با استفاده از
use App\Jobs\MyJob;
، ما کار MyJob
را وارد میکنیم تا بتوانیم از آن استفاده کنیم.فراخوانی dispatchSync:
در خط بعدی، ما کار را با
MyJob::dispatchSync($data);
فراخوانی میکنیم که اینجا $data
دادههایی است که به کار ارسال میشود.استفاده از نتیجه:
در آخر، ما نتیجه کار را در متغیر
$result
ذخیره میکنیم و سپس به نمای 'result'
منتقل میشویم تا نتیجه را نمایش دهیم.