如何在蛋糕php中设置cronjobs?

时间:2012-12-19 09:48:14

标签: cakephp

如何在cakephp中使用cron job在Ubuntu上调用控制器的动作, 我试图通过crontab来做但它不起作用?

4 个答案:

答案 0 :(得分:22)

使用shell

在cron作业中使用CakePHP应用程序的'Cake Way'将创建shell,然后将其称为cron作业。

即。创建一个shell来完成任务,然后将其添加到crontab(linux机器上的crontab -e):

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

Creating shellsusing them with cron包含在文档中。

答案 1 :(得分:1)

由于我们不需要MVC的View层,我还建议使用Cake shell而不是在普通控制器中编写它。这也将减少控制器的各种回调函数的内存负载,如beforeFilter,beforeRender等。

然后在** nix cron选项卡中输入用于在CakeShells中编写的crons的条目。

答案 2 :(得分:0)

这可以通过以下步骤轻松完成 - :

1)创建一个shell,让我们在Console / Command

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

    }

    ?>

这个shell可以通过Console / cake hello调用

2)编写命令crontab-e。这将打开默认编辑器或您选择的编辑器 现在我们希望我们的shell应该在每5分钟后运行一次: -

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

为了更好地理解,请参阅https://www.youtube.com/watch?v=ljgvo2jM234

3)如果你想在Shell中调用Controller的动作,只需导入那个特定的控制器,让我们说{App} App::uses('AppController', 'Controller');

现在通过

在Shell中创建对象AppController
$object =new AppController();
$object->func_in_controller();

现在可以通过$object->func_param;

在命令行管理程序中访问函数的参数

谢谢!

答案 3 :(得分:-1)

您可以创建直接调用URL的cron作业:

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

或者您也可以使用相对路径来执行此操作:

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

您可以查看如何将cron用于unix here

无论如何,我建议您使用CakePHP Shell,如果该操作只能从cron作业获得,而不是通过URL提供给任何其他用户。

您有关于如何从CakePHP documentation中的cron作业调用Cake Shell的更多信息。