Как запустить файл CodeIgniter через CRON?

В прошлом я пробовал следующий метод:

<?php set_time_limit(0); $_SERVER['PATH_INFO'] = 'cron/controller/index'; $_SERVER['REQUEST_URI'] = 'cron/controller/index'; require_once('index.php'); ?> 

и поместив его в файл в каталоге установки codeigniter, называя его cron.php, а затем вызывая его через:

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

Если я наберу URL-адрес cron.php в моем браузере, он отлично работает, однако всякий раз, когда он запускается через CRON, я получаю ошибку 404. show_404() следующий код в show_404() CodeIgniter

 function show_404($page = '') { print_r($_SERVER); echo "\n\n"; die ($page); } 

приводит к получению следующего выпуска по электронной почте:

 Array ( [SHELL] => /bin/sh [MAILTO] => me@gmail.com [USER] => [me] [PATH] => /usr/bin:/bin [PWD] => /home/[me] [SHLVL] => 1 [HOME] => /home/[me] [LOGNAME] => [me] [_] => /usr/bin/php [PHP_SELF] => [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 ) home/[me] 

Здесь я [меня] вместо моего фактического имени пользователя.

Есть идеи?

Solutions Collecting From Web of "Как запустить файл CodeIgniter через CRON?"

Самый простой способ запуска cron через CodeIgniter – сделать URL-адрес cron доступным через ваше приложение.

Затем назовите его через wget

 wget -O - -q -t 1 http://www.example.com/cron/run 

Внутри контроллера вы можете использовать журнал, чтобы гарантировать, что cron не запускается слишком часто, т.е. если роботы Google запускают его по ошибке.

Второй способ – использовать рысь

 /usr/local/bin/lynx -source http://www.example.com/cron/run 

Codeigniter опубликовал документацию о том, как это сделать: http://ellislab.com/codeigniter/user-guide/general/cli.html

Вы также можете добавить –spider, чтобы игнорировать ответ. Это останавливает запрос от тайм-аута:

 wget -O - -q -t 1 --spider http://www.example.com/cron/run 

Вы также можете проверить это: Cron job bootstrapper

Это простой загрузочный файл, который можно использовать для непосредственного запуска контроллеров CodeIgniter из командной строки. Это очень простое и элегантное решение для использования контроллеров CI для рабочих заданий cron. Он также поддерживает ведение журнала.

Существует статья wiki о том, как запустить CodeIgniter в командной строке, но это более полезно для приложений, которые должны взаимодействовать с пользователем через терминал (для этого также есть библиотека).

http://codeigniter.com/wiki/CI_on_the_command_line/

Одно из преимуществ такого способа использования wget заключается в том, что вы можете защитить свой код от запуска пользователями или ботами с помощью:

 if(!empty($_SERVER['HTTP_HOST'])) { show_error('Shove off hax0r!'); } 

Если вы хотите запустить задание cron, запустив url, вот отличная статья

http://www.nbill.co.uk/documentation/setting-up-a-cronjob.html

Использовать php-cli вместо php
Пример:

 /usr/bin/php-cli /home/CPANEL_USER/public_html/index.php cronJobs deleteNotifications