Run PHP scripts automatically at intervals – use Cron Jobs

Automation may be needed in to order to run certain scripts at regular intervals for tasks like scraping , extracting or crawling data from web or do some regular tasks like sending emails or whatever.

To automate a script is simple. The webhost must provide cron facility. Cron is a utility which can be used to execute a set of commands at a given schedule of time.

For e.g. if a php script called regular.php is to be executed regularly every day or every month or on certain weekdays then cron can be configured to execute the script at defined schedules and hence automation is achieved. Since web hosts are alive and online most of the times the automation process is more useful when used on a web server rather than a home pc.

Cron can be configured from Cpanel and via ssh terminal as well.

To configure cron from ssh terminal simply login to your webspace using ssh.

The command crontab -l will show what schedules have already been made or what tasks are to execute according to current cron settings.

Cron settings consist of lines like this

* * * * * /command/to/execute

The 5 stars indicate the time to execute and the /command/to/execute is the path to the script or command which should be executed at that point of time.

If you put the regular.php script in the www folder on your webhost then the path could be :

/home/username/www/regular.php

So the command to execute it would be

php /home/username/www/regular.php

The above command needs a time schedule to run.

The 5 stars indicate the following

Minute Hour Day Month Day — in that order

Minute – 0-59
Hour – 0-23
Day – 1-31
Month – 1-12
Weekday 0-6 (o= Sunday)
* means any

So to execute a script everyday
0 0 * * * – means At 00:00 anyday anymonth anyweekday

So the cron line would be
0 0 * * * php /home/username/www/regular.php

All such cron schedule lines can be written in a txt file and this cron file can be given to crontab to set the schedules using the following command :

crontab crontasks.txt

Another line that can be added on the top of the crontasks.txt file is
MAILTO=user@site.com

and this is the email address to which the execution results shall be mailed.

So the crontasks.txt file can look like this :

MAILTO=user@site.com
0 0 * * * php /home/username/www/regular.php

should be saved and the command :

$crontab crontasks.txt

would set it.

Before setting a new crontask set you may want to backup the previous set of cron tasks :

$crontab -l > oldcrontasks.txt

List current cron jobs :

$crontab -l

Remove all cron jobs :

crontab -r

So using crontab any php script or any other script or command can be executed automatically on server side.

Popularity: 6% [?]

2 Responses to “Run PHP scripts automatically at intervals – use Cron Jobs”

  1. I am attempting to run a cron job and have run into some issues. The cron is a SOAP request to noaa.gov. The result is written to a file which is then saved to a cache directory. The script cycles through and writes the files just fine. The problem is when the script executes three hours later (it is set to run on three hour intervals) there is a permissions issue with opening the previously written files. The cron fails and the old files remain. If I manually delete the files, then it runs again just fine. Any thoughts on how to deal with this? is it MAC related?
    Cheers,
    Sam

  2. Try doing a chmod 777 filename first time and everytime the file is created or modified.

Leave a Reply