Как настроить задание cron с помощью codeigniter

Я пытаюсь настроить задание cron с помощью COdeigniter, но не могу понять, как заставить его работать. У меня есть файл с именем email_check.php в папке моих контроллеров, и я добавил файл .cron в папку cron сервера, которая содержит следующее

email_check.cron

*/1 * * * * php /var/www/html/application/controllers/email_check

email_check.php

class Email_check extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $this->index();
    }

    function index()
    {
        $this->load->model('admin/info_model'); 
        $this->info_model->addTestData();
    }

}

addTestData добавляет новую строку в таблицу базы данных. Я бы хотел, чтобы это запускалось каждую минуту, однако оно вообще не работает, и я понятия не имею, почему.

Может быть, это могут быть пути, которые неверны. Нужно ли указывать часть php на php.exe на сервере.

Если бы кто-нибудь мог помочь или указать мне правильное направление, это было бы очень признательно!


person Pooshonk    schedule 17.07.2013    source источник


Ответы (2)


Чтобы использовать CodeIgniter через командную строку, вам нужно вызвать файл index.php и передать контроллер и метод в качестве аргументов, а также любые другие аргументы. Таким образом, как минимум вызов задания cron будет:

~/public_html/sitefolder/index.php controller method

Или используя путь к индексному файлу вашего приложения. Но вам также нужно использовать PHP, скомпилированный для командной строки, а не только PHP для CGI-FCGI. Таким образом, ваш вызов может быть примерно таким:

/ramdisk/bin/php5-cli ~/public_html/sitefolder/index.php controller method

В зависимости от того, где находится ваш PHP CLI.

person Wolf    schedule 17.07.2013

Это не сработает, потому что простое нажатие на ваш контроллер email_check.php ничего не сделает, потому что он не вызовет ваш метод index().

Вы хотите либо написать скрипт, который создаст новый экземпляр контроллера и вызовет метод, либо вызовет его через URL-адрес, что-то вроде этого, я думаю

* * * * * wget http://sitename.com/email_check
person Pattle    schedule 17.07.2013
comment
Так что мне просто поместить это в файл .cron на сервере, да? - person Pooshonk; 17.07.2013
comment
попробуй и посмотри что будет - person Pattle; 17.07.2013
comment
Нет ничего не происходит к сожалению - person Pooshonk; 17.07.2013
comment
Можете ли вы вставить то, что вы вставили? - person Pattle; 17.07.2013
comment
Именно то, что вы предложили, но я изменил название сайта. Это правильно? Извините, я совсем запутался, как это сделать - person Pooshonk; 17.07.2013
comment
возьмите URL-адрес из задания cron и вставьте его в окно браузера. Если URL-адрес работает в браузере, он должен работать и в задании cron. - person Pattle; 17.07.2013
comment
Я сделал это, и он работал нормально, просто он не запускал задание cron каждую минуту, как я указал. Странный :/ - person Pooshonk; 17.07.2013