У меня есть система терапевта, и каждый терапевт добавляет сеанс со своим временем, когда клиент заказывает сеанс, я запускаю queued job
, чтобы напомнить клиенту и врачу.
- когда начинается сеанс
- до начала сеанса за 3 часа
- до начала сеанса за 1 час
вот пример моего кода
if($this->timeslot->last_charge_type == 'success'){
dispatch(new SessionReminderJob($this->timeslot, $patient, $doctor))
->delay($this->timeslot->start_time->subHour());
dispatch(new SessionReminderJob($this->timeslot, $patient, $doctor))
->delay($this->timeslot->start_time->subHours(3));
}
моя проблема заключается в том, что когда клиент хочет перепланировать этот сеанс, как остановить все эти задания и запустить новый с новым временем.
Я искал некоторые ответы здесь, но неэффективен для моего случая, подобного этому.
SessionReminderJob
, и выбрать фактическое уведомление в этот момент, если оно все еще есть. - person apokryfos   schedule 24.12.2020scheduler
перед использованиемqueued jobs
, но когда я пытаюсь, он должен работать каждые 5 минут, и это будет неэффективно, предположим, что в таблице сеансов около 1 миллиона строк, поэтому в этом случае вам нужно перебирать эти строки каждые 5 минут? - person Joseph   schedule 24.12.2020index
в столбецstart_time
? - person Joseph   schedule 24.12.2020explain
для самых медленных запросов, которые вы хотите оптимизировать, чтобы посмотреть, что еще можно сделать. - person apokryfos   schedule 24.12.2020