Anyone who worked with WordPress’s built in scheduling (cron) system may have come across the problem that many other developers have: it sucks. The problem is that the WordPress cron system only works if there are continual visits to the website. If there are no visits, cron jobs do not run. Improved Cron by Paul’s Web Solutions solves this problem with a very elegant little plugin.
What does the plugin do?
This is not the typical WP Cron plugin. Improved Cron spawns a PHP background process that continues running independently even when no one is visiting your site. It sits in sleep mode and every 60 seconds ‘wakes up’ and forces WP Cron to run. The plugin also has a keep-alive system in case the background process dies for some reason.
I picked up a copy of the plugin for use here on this site because I was noticing that my newsletter mailing (which uses the WP cron system) was pretty finicky. Once installed, the plugin places a new “Improved Cron” link under the Tools menu. This page then displays a variety of information relating to scheduled tasks.
First, it shows a little about the plugin’s status, mostly so that you can see whether it is running or not.
Next, it shows a table of all the different time intervals that can be used by scheduled tasks, such as the built in “Once Hourly”, “Twice Daily”, and “Once Daily” time intervals. It also lists any custom intervals that have been added by other plugins.
In the last table, the plugin shows all of the currently scheduled tasks and all of the necessary information related to each task, such as the hook to be fired, the time interval, and when it will be run next.
As I said, I bought the plugin in hopes that it would improve my newsletter system. Well, it did just that and did it beautifully.
Improved Cron is one of those rare gems that we come across occasionally that really, really should be integrated into the WordPress core. It does one task, but does it very, very well, and also provides a great interface for us to monitor our cron jobs. It also fits perfectly into the default WordPress interface.