With the Symfony Scheduler component we can schedule actions that get executed at predetermined times. So, the component works as a dispatcher of tasks that live inside the Symfony world.
But I can't find any obvious documentation of how this ties in to the operating system. I would expect that an entry is added to the system crontab, so that it triggers the Scheduler component engine, so that it can then trigger the tasks it is set up to execute.
Is that how it works? Or is it a system service? Or is it something else?
Symfony Schedule works on top of Symfony Messenger, it's not tied to the OS in any way. It generates and dispatches messages to be consumed whenever the Scheduler trigger is met.
The only "tie" to the OS system is the execution of the Symfony Messenger consumer, which is done however you want it to be done.
To consume the Scheduler messages, you run the Messenger consumer, specifying the Scheduler transport. It goes like this (assuming you haven't named your scheduler otherwise in the attribute, e.g. #[AsSchedule('important')]
):
php bin/console messenger:consume scheduler_default
It's mentioned in the docs here.
Besides the docs, these articles might be helpful:
I think that's confusing you is the need that Scheduler actually meets. I believe Scheduler is mostly useful in "serverless" scenarios, where you do not have a server where you can schedule commands to be executed at arbitrary intervals. If the only thing you have is a running process, then suddenly Scheduler looks much more interesting.