Cakephp 2.0, CPanel и скрипты Shell

У меня есть cPanel на общем сервере, и мне нужно каждый день запускать сценарий оболочки.

Этот скрипт должен вызывать функцию контроллера, которая каждый день удаляет веб-страницу.

Моя проблема в том, что я не знаю, как сделать сценарий оболочки, который вызывает эту функцию, и добавлять ее в задания cron в cpanel. Как мне все это сделать?

Заранее спасибо!


Я собираюсь расширить свой вопрос.

У меня есть этот код "TestTask.php":

class TestTask extends Shell {

    function main() {
         $this->out('Hello world.');
    }

    function execute() {
         $this->out('Hello world 2.');
    }
}

Он находится по адресу: /home/myuser/public_html/app/Console/Command/Task

И тогда мой cronjob выглядит так:

* * * * * php /home/myuser/public_html/app/Console/cake.php test -app /home/myuser/public_html/app >> /home/myuser/public_html/file.log

Последняя часть заключается в регистрации вывода в файле.

Это вообще не работает.

Помогите, пожалуйста!!!


person bdovaz    schedule 15.01.2012    source источник
comment
Если у вас есть доступ по ssh, я думаю, вы можете сделать это с помощью команды crontab -e.   -  person Ali Ismayilov    schedule 15.01.2012


Ответы (1)


Вот команда для задания cron, которое я использую на своем сервере:

/home/path-to-cake/lib/Cake/Console/cake -app /home/path-to-cake/app time

где time — моя оболочка, расположенная в /app/Console/Command/TimeShell.php. Вот как вы запускаете оболочки.

Теперь, что касается другой части вашего вопроса, задача должна быть вызвана из оболочки. Из кода, который вы разместили, кажется, что вы немного путаете оболочки с задачами. Оболочка может содержать задачи, так же как контроллеры могут иметь компоненты. main(); требуется для оболочки, когда она вызывается без каких-либо аргументов. Не стоит задаче его реализовать. С другой стороны, задача должна реализовывать метод execute();.

Чтобы запустить задачу из вашей оболочки, обязательно добавьте public $tasks = array('Test'); в класс TestShell; Вы можете использовать эту задачу в своей оболочке так же, как вы используете компонент в контроллере: $this->Test->whatever();

Для получения дополнительной информации о оболочках и задачах CakePHP 2.0 см. здесь

Надеюсь, это помогло!

person linkyndy    schedule 10.02.2012