Skip to content

Instantly share code, notes, and snippets.

@mmouih
Created January 22, 2024 02:00
Show Gist options
  • Save mmouih/49566c45a1d52506372f0fd61b2ab355 to your computer and use it in GitHub Desktop.
Save mmouih/49566c45a1d52506372f0fd61b2ab355 to your computer and use it in GitHub Desktop.
CallbackScheduleProvider
<?php
namespace App\Scheduler;
use App\Message\WatchDogMessage;
use Symfony\Component\Scheduler\Schedule;
use Symfony\Component\Scheduler\RecurringMessage;
use Symfony\Component\Scheduler\Attribute\AsSchedule;
use Symfony\Component\Scheduler\ScheduleProviderInterface;
use Symfony\Component\Scheduler\Trigger\CallbackTrigger;
#[AsSchedule('callback')]
class CallbackScheduleProvider implements ScheduleProviderInterface
{
static $count = 0;
public function getSchedule(): Schedule
{
$trigger = new CallbackTrigger(function() {
return (new \DateTimeImmutable('now'))->modify(sprintf('+%d seconds', ++static::$count));
});
return (new Schedule())->add(
RecurringMessage::trigger($trigger, new WatchDogMessage(['logger', 'imports', 'exports']))
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment