سلام دوستان.
بنده یک job ساختم که ویدو ها رو پردازش میکنه ( FFMpeg ). وقتی که توی فرم دکمه پردازش رو میزنم که درخواست پردازش انجام بشه ، پردازش شروع میشه اما صفحه تو همون حالت میمونه و تا پردازش تموم نشه صفحه انتقال داده نمیشه. چطوری میشه که کاری کنم که وقتی درخواست پردازش به کنترلر که فرستاده شد، اون پردازش در پس زمینه اجرا بشه و کاربر رو به صفحه ای انتقال بده و پیامی مبنی بر اینکه پردازش شروع شد رو نمایش بده ؟
کد ها هم به صورت زیر هستش :
در ویو یک فرم وجود داره که از کاربر یکسری اندازه میگره و به کنترلر و متد زیر هدایت میکنه و پردازش رو به این صورت انجام میده :
public function update(Request $request, $id)
{
$video = Video::find($id);
$resolutions = explode(',', $request->covert_video);
foreach ($resolutions as $resolution) {
ProcessVideo::dispatchNow($video, [
"width" => round(round($resolution) * 1.777777777777778),
"height" => round($resolution)
]);
}
return back()->with('success', 'Videos Processed Successfully!');
}
دوستان ببخشید اگر تگتون میکنم :|
@ali.bayat
@Alimotreb
@hesammousavi
سلام والا چیزی که من سرچ زدم هنوز تست نکردم اضاف کردن خط زیر به فایل env
QUEUE_DRIVER=sync
QUEUE_DRIVER=database
و استفاده از متد dispatch
public function store(Request $request)
{
// Create post here ..
SendEmails::dispatch($post);
}
مقاله کاملش رو میتونی از لینک زیر ببینید.
https://www.learn2torials.com/a/how-to-create-background-job-in-laravel
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟