محمد امیری
4 سال پیش توسط محمد امیری مطرح شد
3 پاسخ

ارسال ایمیل در لاراول

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

      ini_set('max_execution_time', 180);

        $users = User::all()->take(1000);

        foreach ($users as $user) {

            Mail::to($user->email)->send(new OrderShipped($user));

        }

ثبت پرسش جدید
HRH
تخصص : back-end developer , switching...
@h.r.hassani 4 سال پیش مطرح شد
0

شما باید از جاب ها استفاده کنید. به این صورت که یک جاب با دستور php artisan make:job name می سازید بعد درون متد handle اون جاب ایمیل هارو ارسال می کنید . برای اینکه یک جاب رو فراخوانی کنید باید این کار را بکنید

testJob::dispatch(ورودی ها)

شما می تونید این ورودی ها رو در متد __construct کلاس جاب بگیرید . اینگونه جاب در دیتابیس ذخیره می شود . البته قبلش باید با دستور php artisan queue:table مایگریشن مربوط به جدول جاب ها رو ایجاد کنید . حال برای اجرای جاب ها دستور php artisan queue:work رو می زنید این دستور اول جاب های ذخیره شده در دیتابیس را اجرا می کند بعد هم منتظر می ماند تا جاب جدیدی dispatch شود. حالا می بینید که صفحه هنگام لود به سرعت لود می شود


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@mohammadeng3731
سلام.
باید از درایور database برای job ها استفاده کنی.
https://laravel.com/docs/7.x/queues#driver-prerequisites


محمد امیری
تخصص : backend coder
@mohammadeng3731 4 سال پیش مطرح شد
0

@mohsenbostan
@h.r.hassani
دست همتون درد نکنه .یادم رفته بود از ShouldQueue اون mailer رو implement کنم.درست شد


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

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