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

How The Pandemic Has Helped Push P2P Payments Mainstream

U.S. millennials were early adopters of person-to-person (P2P) payment apps, while Baby Boomers sought out financial institution-based P2P options and older consumers were slow to join in — until now. Fiserv‘s Vice President of Product Managemen ...

An untapped market - The unbanked shopper

Many of us assume that everyone has a bank account of some sort. But according to the latest report from World Bank Group, around 1.7 billion adults remain unbanked globally. That’s roughly one-fourth of the global population.

Best food blogs to follow

Choosing which food blogs to follow can be overwhelming. Scrolling through all those recipes and mouthwatering photos would take eons. And deciphering nutrition fact from fiction and personal anecdotes from expert-backed advice is no easy task.