محمد رزاقی
6 سال پیش توسط محمد رزاقی مطرح شد
3 پاسخ

اجرای یک job در زمان تعیین شده

سلام
یه سوالی داشتم
کسی تجربه ای داره برای انجام یک job در یک صف در یک زمان مشخص
برای مثال امروز می خوایم یه دستوری رو بذاریم تو صف که فردا ساعت 10 صبح اجرا بشه(مثلا ارسال ایمیل انبوه)
دوباره فردا یه ارسال ایمیل انبوه دیگه داریم که میخوایم بذاریمش تو صف تا مثلا روز جمعه ساعت 13:45 اجرا بشه
بنظرتون چیکار میشه کرد؟


ثبت پرسش جدید
vahid Mohammadi
@viva.mohammadi 6 سال پیش مطرح شد
2

@1razzaghi

سلام اگر فقط مساله شما زمانبندی ارسال ایمیل هست لازم نیست Job تعریف کنید خود تابع Mail به شما امکان ایجاد تاخیر در زمان ارسال ایمیل میده و می تونید به شکل زیر عمل کنید.

$when = now()->addMinutes(10);

Mail::to($request->user())
    ->cc($moreUsers)
    ->bcc($evenMoreUsers)
    ->later($when, new OrderShipped($order));

محمد رزاقی
@1razzaghi 6 سال پیش مطرح شد
0

سلام
ممنون از پاسختون
ولی منظور من برای میل یک مثال بود
فرض کنید job های سنگین 1000 تایی و 2000 تایی از مدل های مختلف داریم
مثلا فرض کنید تو یه پنل پیامکی کاربر درخواست ارسال پیامک میده امشب که فردا صبح ساعت 11 پیامک هاش ارسال شه
حالا ممکنه متن پیامکش رو شما ساعت 10 امشب تایید کنی ولی ارسالش تو زمانیه که اون میخواد
اصلا منظورم ایمیل و پیامک نیست
دنبال یه سولوشن هستم برای اینکار که به صورت داینامیک صف هایی در سرور ایجاد بشه و به صورت داینامیک هم مدیریت بشن صف ها


محمد رزاقی
@1razzaghi 6 سال پیش مطرح شد
0

سلام
یه راهی پیدا کردم
حالا نمیدونم درسته یا یه جوری کلک رشتی می شه!
اگر به تابع delay تاریخ مثلا فردا رو بفرستیم تو جدول jobs فیلد available_at رو میذاره برای تاریخی که ما به delay دادیم و تا job به زمان دسترس شدنش نرسه اجرا نمیشه
حالا نمی دونم اینکار درست هست یا نه؟ که اینقدر worker رو معطل گذاشت
هزینه اجرای کارمون رو بالا نمیبره؟


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

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