Understanding Cron Job schedules

The control panel offers a tool called Cron Jobs to periodically call a specified URL on your site. This is useful to execute scheduled tasks or perform background operations.

The control panel offers a “Minute and/or Hours” selector to choose when the cron job is executed. However, this configuration system is confusing and tends to behave in unexpected ways.

Recommended Schedules

Calling a URL once per hour

If you want like to execute a URL once per hour on the whole hour, the schedule to do so is Minutes: 59. The hours selector may be set to Hours: 0, Hours: 1 or be left empty.

With this schedule, the URL is called once per hour at the whole hour.

Calling a URL multiple times per hour

If you would like to call a URL multiple times per hour, like once every 15 minutes, the schedule to do so is: Minutes: 15. The hours selector may be set to Hours: 0, Hours: 1 or be left empty.

You can choose other schedules too, like every 5, 10, 20 or 30 minutes.

Calling a URL once every few hours

The current cron scheduling does not appear to support calling a URL less than once per hour.

If you only need to execute a cron job less frequently than that (like once per day), you can setup a cron job to execute every hour and implement a check to see the hour of the day. If the hour is a specified value (like 12), only then the cron logic is performed.

Good to know about the schedules

The cron schedule has a lot of caveats and unexpected behavior.

  • Cron jobs will be called once when they are added.
  • Cron jobs can sometimes run multiple times or not run at all. Do not expect cron jobs to always run at specified times.
    • Cron jobs tend to execute an additional time at the whole hour. This tends to happen quite often regardless of the configuration.
  • If you leave the Minute selector empty, the cron job will not run.
  • Selecting “Hours: 0”, “Hours: 1” or leaving the “Hours” setting empty seems to have identical effects: only the Minute schedule will be followed.
  • If you select a number greater than 2 for the Hours selector, the cron job will be executed according to the minute schedule, and another time every specified number of hours.