Некоторые задачи для сайта необходимо выполнять при помощи планировщика crontab
Например, рассылки писем, формирование и отправка отчетов администраторам и т.д.
В этом случае нам необходимо запускать наши скрипты из командной строки.
Для этого подготовим контроллер, например, stat.php,
разместим его в /kohana/application/classes/controller/

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Stat extends Controller {

    public function before() {

        parent::before();

        //Эта проверка позволяет определить нам, был запущен этот скрипт из web
        //или из командной строки, для web вызова отправляем пользователя
        //на 404 страницу
        if(!Kohana::$is_cli)
        {
            throw new HTTP_Exception_404('Запрашиваемая страница несуществует!');
        }
    }

    public function action_send()
    {
        //Здесь можно написать отправку письма администратору, например:
        $to = 'admin@admin.com';
        $subject = 'Сообщение с сайта';
        $message = 'Сейчас - ' . date('H:i:s', time());

        mail($to, $subject, $message);
    }
}

Вызов экшена send из командной строки – выглядит следующим образом:
> php index.php –uri=stat/send, где stat – имя контроллера, send – имя экшена.
Естественно при таком варианте запуска скрипта вы должны находиться в корневой папке сайта, например в /var/www/kohana/

В случае вызова скрипта при помощи crontab на некоторых серверах комманда может быть следующей:

–method – методы запроса (POST, GET,PUT)
--get - php index.php --uri=stat/send --get=name=admin&pass=secret
--post - php index.php --uri=stat/send --post=name=admin&pass=secret

Доступ к параметрам в экшене: $params = CLI::options(‘uri’, ‘post’);

4 thoughts on “Использование kohana 3.2 из командной строки для CRON

      • Спасибо за уточнение. На самом деле изначально в тексте и было два тире, только WP их в момент вывода страницы почему-то менял на один дефис…

        Reply

Leave a reply

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

required