محسن بستان
4 سال پیش توسط محسن بستان مطرح شد
1 پاسخ

انجام queue در background

سلام دوستان.
بنده یک 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


ثبت پرسش جدید
سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 4 سال پیش آپدیت شد
1

سلام والا چیزی که من سرچ زدم هنوز تست نکردم اضاف کردن خط زیر به فایل 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


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام