13
13
14
14
use Symfony \Component \Scheduler \Exception \InvalidArgumentException ;
15
15
use Symfony \Component \Scheduler \Trigger \CronExpressionTrigger ;
16
- use Symfony \Component \Scheduler \Trigger \DateIntervalTrigger ;
17
16
use Symfony \Component \Scheduler \Trigger \JitterTrigger ;
17
+ use Symfony \Component \Scheduler \Trigger \PeriodicalTrigger ;
18
18
use Symfony \Component \Scheduler \Trigger \TriggerInterface ;
19
19
20
20
/**
@@ -31,17 +31,21 @@ private function __construct(
31
31
}
32
32
33
33
/**
34
- * Uses a relative date format to define the frequency.
34
+ * Sets the trigger frequency.
35
35
*
36
+ * Supported frequency formats:
37
+ *
38
+ * * An integer to define the frequency as a number of seconds;
39
+ * * An ISO 8601 duration format;
40
+ * * A relative date format as supported by \DateInterval;
41
+ * * A \DateInterval instance.
42
+ *
43
+ * @see https://en.wikipedia.org/wiki/ISO_8601#Durations
36
44
* @see https://php.net/datetime.formats.relative
37
45
*/
38
- public static function every (string $ frequency , object $ message , string |\DateTimeImmutable $ from = new \DateTimeImmutable (), string |\DateTimeImmutable $ until = new \DateTimeImmutable ('3000-01-01 ' )): self
46
+ public static function every (string | int | \ DateInterval $ frequency , object $ message , string |\DateTimeImmutable $ from = new \DateTimeImmutable (), string |\DateTimeImmutable $ until = new \DateTimeImmutable ('3000-01-01 ' )): self
39
47
{
40
- if (false === $ interval = \DateInterval::createFromDateString ($ frequency )) {
41
- throw new InvalidArgumentException (sprintf ('Frequency "%s" cannot be parsed. ' , $ frequency ));
42
- }
43
-
44
- return new self (new DateIntervalTrigger ($ interval , $ from , $ until ), $ message );
48
+ return new self (new PeriodicalTrigger ($ frequency , $ from , $ until ), $ message );
45
49
}
46
50
47
51
public static function cron (string $ expression , object $ message ): self
0 commit comments