Stepan Kosatyi

Managing Cron Jobs With PHP

Managing Cron Jobs With PHP

In this tutorial, we’ll create a dynamic PHP class that, using a secure connection, provides us with a means to manipulate the cronTab!

An Overview of the Crontab

Let’s face it, having the ability to schedule tasks to run in the background is just great! From backing up an SQL database, fetching / sending emails to running clean up tasks, analyzing performance, or even grabbing RSS feeds, cron jobs are fantastic!

Although the syntax of scheduling a new job may seem daunting at first glance, it’s actually relatively simple to understand once you break it down. A cron job will always have five columns each of which represent a chronological operator followed by the full path and command to execute:

* * * * * home/path/to/command/

Each of the chronological columns has a specific relevance to the schedule of the task. They are as follows:

  • Minutes represents the minutes of a given hour, 0-59 respectively.
  • Hours represents the hours of a given day, 0-23 respectively.
  • Days represents the days of a given month, 1-31 respectively.
  • Months represents the months of a given year, 1-12 respectively.
  • Day of the Week represents the day of the week, Sunday through Saturday, numerically, as 0-6 respectively.
Minutes [0-59]
|   Hours [0-23]
|   |   Days [1-31]
|   |   |   Months [1-12]
|   |   |   |   Days of the Week [Numeric, 0-6]
|   |   |   |   |
*   *   *   *   * home/path/to/command/

So, for example, if one wanted to schedule a task for 12am on the first day of every month it would look something like this:

0 0 1 * * home/path/to/command/

If we wanted to schedule a task to run every Saturday at 8:30am we’d write it as follows:

30 8 * * 6 home/path/to/command/

There are also a number of operators which can be used to customize the schedule even further:

  • Commas is used to create a comma separated list of values for any of the cron columns.
  • Dashes is used to specify a range of values.
  • Asterisks is used to specify ‘all’ or ‘every’ value.

The cronTab, by default, will send an email notification whenever a scheduled task is executed.

The cronTab, by default, will send an email notification whenever a scheduled task is executed. In many circumstances, though, this just isn’t needed. We can easily suppress this functionality, though, by redirecting the standard output of this command to the ‘black hole’ or /dev/null device. Essentially, this is a file that will discard everything written to it. Output redirection is done via the > operator. Let’s take a look at how we can redirect standard output to the black hole using our sample cron job which runs a scheduled task every Saturday at 8:30am:

30 8 * * 6 home/path/to/command/ >/dev/null

Additionally, if we’re redirecting the standard output to a the null device, we’ll probably want to redirect the standard errors as well. We can do this by simply redirecting standard errors to where the standard output is already redirected, the null device!

30 8 * * 6 home/path/to/command/ >/dev/null 2>&1

The Blueprint

In order to manage the cronTab with PHP, we’ll need the ability to execute commands, on the remote server, as the user whose cronTab we’re editing. Fortunately, PHP provides us with a simple way to do this via the SSH2 library. You may or may not have this library installed so if you don’t, you’ll want to get it installed:

libssh2 Installation / Configuration

12 e-Commerce Sites with the Most Inspirational Checkouts

So you have an e-Commerce site or are building one, and you’re wondering “What can I do to increase my conversion rates?” Well, then this post is for you! And while you’re at it, you might want to read this one as well: How to Improve Your Conv ...

Why Bunq Banks On The Cloud For An Innovative Edge

Nine out of 10 banks still rely on old-school mainframe systems for their core needs, a technological challenge that can result in legacy financial institutions (FIs) falling behind digital challengers. In our Digital Banks And The Power Of The ...

Top 5 Principles for an Improved Checkout Design

We have all probably been victims of an impractical or just plain unusable checkout system while trying to perform a purchase online. Most websites are built with the intention to convert the visitors into customers but that won’t happen when a ...