راکت

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

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));

        }
ثبت پرسش جدید

پاسخ‌ها

3
HRH
HRH
@h.r.hassani

تخصص: back-end developer , switching to AI

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

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

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

محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

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

شاید پاسخ شما همین‌جا باشد

محمد امیری
محمد امیری
@mohammadeng3731

تخصص: backend coder

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

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

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