Если кому-то еще интересно,
В новом CakePHP 2.0.5 вы найдете index.php в папке webroot:
Скопируйте этот файл и назовите его cron_dispatcher.php и поместите в тот же каталог (webroot)
Вы найдете этот код в самом низу:
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(new CakeRequest(), new CakeResponse(array('charset' => Configure::read('App.encoding'))));
изменить дно на
define('CRON_DISPATCHER',true);
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(new CakeRequest($argv[1]), new CakeResponse(array('charset' => Configure::read('App.encoding'))));
Здесь вы делаете две вещи: устанавливаете CRON_DISPATCHER в true и передаете переменные окружения ($ argv [1]).
В вашем контроллере добавьте эту строку, прежде чем делать что-либо еще:
if (!defined('CRON_DISPATCHER')) { $this->redirect('/'); exit(); }
Это гарантирует, что люди, посещающие yoursite.com/controller/cronaction, не смогут запустить ваш скрипт.
В файле htaccess в webroot добавьте:
<Files "cron_dispatcher.php">
Order deny,allow
Deny from all
</Files>
Это гарантирует, что люди, идущие на yoursite.com/cron_dispatcher.php, не смогут запустить его.
Теперь настройте задание cron, используя что-то вроде команды:
php /home/yoursite/public_html/cakephp/app/webroot/cron_dispatcher.php /controller/cronjobaction