[Scheduler] Add validation for comma-separated weekdays in PeriodicalTrigger #61143
+5
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue
When using
RecurringMessage::every()
with comma-separated weekdays like"Monday, Thursday, Saturday"
, the scheduler silently fails because PHP'sDateInterval::createFromDateString()
treats commas as delimiters, not processing the list as intended.Solution
I have done a detailed analysis and searched the PHP documentation. Comma-separated weekday strings are not officially supported by PHP's DateInterval::createFromDateString() method. The PHP manual does not document this format, and testing confirms that commas act as delimiters in the date parsing engine, causing unexpected behavior.
Added validation to detect comma-separated values in PeriodicalTrigger and throw a clear InvalidArgumentException instead of allowing silent failures.
Changes
Alternative: For multiple weekdays, use
RecurringMessage::cron('5 12 * * 1,4,6', $message, 'Europe/Warsaw')
instead.Documentation
Update is here: symfony/symfony-docs#21212