Как динамически изменить интервал повторяющегося сообщения с помощью планировщика?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как динамически изменить интервал повторяющегося сообщения с помощью планировщика?

Сообщение Anonymous »

У меня есть планировщик, который отправляет повторяющееся сообщение каждые пять минут, чтобы обновить некоторые кэшированные внешние данные. Я добавил функцию, которая позволяет пользователю изменить этот интервал на переднем крае. Тем не менее, я не могу изменить график таким образом, чтобы повторяющиеся сообщения происходили в соответствии с новым интервалом. К сожалению, я всегда создаю новый график вместо того, чтобы получать существующий. Это было бы хорошо, если бы обработчик сообщений использовал недавно созданный график, но вместо этого он продолжает использовать старые запланированные сообщения. Поставщик графика и класс, который обрабатывает обновление расписания, приведены ниже. Я также пытался сделать переменную расписания статичной, но это не изменило мои результаты. Даже при использовании Prerunevent из функции графика до я не могу получить существующее расписание.
#[AsSchedule('update_cache')]
final class UpdateCacheTaskProvider implements ScheduleProviderInterface
{
public function getSchedule(): Schedule
{
return $this->schedule ??= (new Schedule())->with(
RecurringMessage::every($this->getRefreshRateInterval(), new UpdateCacheMessage())
);
}
}

class RefreshRateSubscriber implements EventSubscriberInterface
{
public function __construct(private UpdateCacheTaskProvider $updateCacheTaskProvider) {}

public function onRefreshRateChanged(RefreshRateChangedEvent $event): void
{
$this->updateCacheTaskProvider
->getSchedule()
->clear()
->add(RecurringMessage::every($event->getRefreshRateInterval(), new UpdateCacheMessage()));
}

public static function getSubscribedEvents(): array
{
return [
RefreshRateChangedEvent::NAME => 'onRefreshRateChanged'
];
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... -scheduler
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»