Running a PHP script on a regular schedule using curl and cron. Under normal circumstances a PHP script is only executed when someone requests it via the web by clicking on a link or typing the URL into the location bar. However, on occasion, you may want a script to do something at a regular interval instead – perhaps to rebuild a “daily graphic” or send nightly email. In these circumstances, you need to trigger the script using a different mechanism than random web access. That’s what this note is about. The following discussion assumes you have created a PHP script that performs the necessary actions when accessed via the web. In this case, that script is called “cron-demo.php” and is stored in a folder called “cron” off of the user’s root web folder (aka “public_html” on a UW server). [Note: real uw netids need to replace “uwnetid” in each of the three places it occurs below!] [public_html/cron/cron-demo.php] <?php // ---- EMAIL test script for PHP ------ $to =
[email protected]'; $subject = 'Cron Test'; $message = 'Greetings from planet krypton where it is currently ' .date("l dS \of F Y h:i:s A"); $headers = 'From:
[email protected]' . "\r\n" . 'Reply-To:
[email protected]' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); print" Script complete.\n"; ?> The next step is to create an operating system script (called a “shell script”) that uses an operating system utility called “curl” to access your PHP script via the web. This file is also stored in a folder called “cron” but located just off the user’s “normal” home or root folder (i.e.