Turning to Symfony: When Cron just isn’t enough

Reaching the limits of Cron

If you’re reading this blog post on account of the title, hopefully you already have a good understanding of what Cron is and you may well also be aware of some of it’s limitations. There are some situations when Cron use simply becomes impractical; the Cron minimum timeout of 1 minute can be prohibitively long to wait, rendering Cron an unhelpful tool for that particular project or situation.

In such moments I use Linux Upstart. It can run your code without a timeout at all or you can choose to set the timeout that you need.

Setting up Upstart

It’s very simple to set this up. To make a Symfony command I use daemonizable-command and write something like this:

Configuration

After that you’ll need to add an Upstart configuration file in Ubuntu.

The file extension should be “conf” eg,“project-task.conf”. Put the file into /etc/init/ or $HOME/.init/

You can find more configurations here.

Control

Now you can control your command like a Ubuntu service:
service <project-task> status/stop/start/restart

Bonus

And for more usability I’ve written a small task for checking the status of and restarting these Upstart tasks. This one’s run by cron 🙂

I hope this makes your life easier 😉