Подтвердить что ты не робот

Как настроить cronjobs в cake php?

Как я могу использовать задание cron в cakephp для вызова действия контроллера на Ubuntu, Я пытаюсь сделать это через crontab, но он не работает?

4b9b3361

Ответ 1

Использовать оболочку

"Cake Way" использования приложения CakePHP в заданиях cron будет создавать оболочку, а затем называть ее как задание cron.

то есть. Создайте оболочку для выполнения задачи, а затем добавьте ее в crontab (crontab -e на машине linux):

0 * * * *       cd /path/to/app/ && Console/cake your_shell_name params

Создание оболочек и с их использованием cron содержится в документации.

Ответ 2

Поскольку нам не нужен слой View MVC, я также предлагаю использовать оболочку Cake вместо записи в обычных контроллерах. Это также уменьшит нагрузку на память различных функций обратного вызова контроллеров, таких как beforeFilter, beforeRender и др.

Затем сделайте запись на вкладке ** nix cron для корон, написанных на вашем CakeShells.

Ответ 3

Это можно сделать очень легко, выполнив следующие шаги:

1) Создайте оболочку, скажем, HelloShell.php в консоли /Command

 <?php
    class HelloShell extends AppShell
    {
    public function main()
    {
    //Your functionality here...
    }

    }

    ?>

Эта оболочка может быть вызвана с помощью консоли /cake hello

2) Напишите команду crontab-e. Это откроет редактор по умолчанию или редактор, который вы выберете Теперь, когда мы хотим, чтобы наша оболочка запускалась через каждые 5 минут, пишите: -

  */5 * * * * /PATH TO APP/Console/cake hello

Для лучшего понимания см. https://www.youtube.com/watch?v=ljgvo2jM234

3) Если вы хотите вызвать действие контроллера в Shell, просто импортируйте этот конкретный контроллер, скажем, AppController на App::uses('AppController', 'Controller');

Теперь создайте объект AppController в оболочке

$object =new AppController();
$object->func_in_controller();

Теперь параметры функции можно получить в оболочке $object->func_param;

Спасибо!

Ответ 4

Вы можете создать задания cron, напрямую вызывающие URL:

php -f http://yoursite.com/yourController/yourAction/params > /dev/null

Или вы можете сделать это также с относительными путями:

php -f CakePHP/yourController/yourAction/params > /dev/null

Вы можете посмотреть, как использовать cron для unix здесь.

В любом случае, я рекомендую использовать CakePHP Shell, если действие будет доступно только из заданий cron, а не для любого другого пользователя по URL-адресу.

У вас есть дополнительная информация о том, как вызвать Cake Shell из заданий cron в документации CakePHP.