У меня есть планировщик, который отправляет повторяющееся сообщение каждые пять минут, чтобы обновить некоторые кэшированные внешние данные. Я добавил функцию, которая позволяет пользователю изменить этот интервал на переднем крае. Тем не менее, я не могу изменить график таким образом, чтобы повторяющиеся сообщения происходили в соответствии с новым интервалом. К сожалению, я всегда создаю новый график вместо того, чтобы получать существующий. Это было бы хорошо, если бы обработчик сообщений использовал недавно созданный график, но вместо этого он продолжает использовать старые запланированные сообщения. Поставщик графика и класс, который обрабатывает обновление расписания, приведены ниже. Я также пытался сделать переменную расписания статичной, но это не изменило мои результаты. Даже при использовании 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
Как динамически изменить интервал повторяющегося сообщения с помощью планировщика? ⇐ Php
Кемеровские программисты php общаются здесь
1741675830
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'
];
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79499860/how-to-dynamically-change-the-interval-of-a-recurring-message-using-scheduler[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия