راکت

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

3 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

3
vahid Mohammadi
vahid Mohammadi
@viva.mohammadi

@1razzaghi

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

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

Mail::to($request->user())
    ->cc($moreUsers)
    ->bcc($evenMoreUsers)
    ->later($when, new OrderShipped($order));
محمد رزاقی
محمد رزاقی
@1razzaghi

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

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

محمد رزاقی
محمد رزاقی
@1razzaghi

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

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

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