سلام.
من میخوام یهو به 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));
}
شما باید از جاب ها استفاده کنید. به این صورت که یک جاب با دستور php artisan make:job name
می سازید بعد درون متد handle اون جاب ایمیل هارو ارسال می کنید . برای اینکه یک جاب رو فراخوانی کنید باید این کار را بکنید
testJob::dispatch(ورودی ها)
شما می تونید این ورودی ها رو در متد __construct کلاس جاب بگیرید . اینگونه جاب در دیتابیس ذخیره می شود . البته قبلش باید با دستور php artisan queue:table
مایگریشن مربوط به جدول جاب ها رو ایجاد کنید . حال برای اجرای جاب ها دستور php artisan queue:work
رو می زنید این دستور اول جاب های ذخیره شده در دیتابیس را اجرا می کند بعد هم منتظر می ماند تا جاب جدیدی dispatch شود. حالا می بینید که صفحه هنگام لود به سرعت لود می شود
@mohammadeng3731
سلام.
باید از درایور database برای job ها استفاده کنی.
https://laravel.com/docs/7.x/queues#driver-prerequisites
@mohsenbostan
@h.r.hassani
دست همتون درد نکنه .یادم رفته بود از ShouldQueue اون mailer رو implement کنم.درست شد
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟