Click Upvote Click Upvote - 2 months ago 9
PHP Question

How to run a CodeIgniter file through CRON?

I've tried the following method in the past:

$_SERVER['PATH_INFO'] = 'cron/controller/index';
$_SERVER['REQUEST_URI'] = 'cron/controller/index';

and putting this in a file in the codeigniter installation directory, calling it cron.php, and then invoking it via:

php /home/[username]/public_html/my_project/cron.php

If I type the URL to cron.php in my browser it works perfectly, however whenever its run via CRON I get a 404 error. Putting the following code in the
function of CodeIgniter

function show_404($page = '')
echo "\n\n";
die ($page);

results in getting the following output emailed to me:

[SHELL] => /bin/sh
[USER] => [me]
[PATH] => /usr/bin:/bin
[PWD] => /home/[me]
[SHLVL] => 1
[HOME] => /home/[me]
[LOGNAME] => [me]
[_] => /usr/bin/php
[REQUEST_TIME] => 1266479641
[argv] => Array
[0] => /home/[me]/public_html/my_project/cron.php

[argc] => 1
[PATH_INFO] => cron/controller/index
[REQUEST_URI] => cron/controllers/index


Here I've [me] in place of my actual username.

Any ideas?


The simplest way to run a cron via CodeIgniter is to make a cron URL available via your app.

Then call it via wget

wget -O - -q -t 1

Inside the controller you can then use a log to ensure the cron is not run too often i.e. if the Google robots trigger it by mistake.

A second method would be to use lynx

/usr/local/bin/lynx -source