小编Cat*_*ine的帖子

Cakephp cron作业调用控制器的动作

几个月前我开始使用CakePHP(1.2)为公司的应用程序添加小功能,我对它不太熟悉.

在合并到生产服务器之前,我们在开发服务器上进行本地测试.

我希望每小时调用一个控制器动作,我认为通过我的研究,一个cron工作,我认为这是最好的方法.


尝试1

看完之后,

http://bakery.cakephp.org/articles/mathew_attlee/2006/12/05/calling-controller-actions-from-cron-and-the-command-line

http://book.cakephp.org/1.2/en/view/110/Creating-Shells-Tasks

我可以实现没有错误的东西,但是没有执行动作.

根据这些示例,我在我的app目录(不是app/webroot)中添加了一个名为cron_dispatcher.php的文件,然后从app dir中执行了此命令

php cron_dispatcher.php/controller/action/param

当我通过url调用它时,它仍然没有发生任何事情,但它完美无缺.


尝试2

我尝试创建一个shell(email.php)来调用/ app/vendors/shells /中的操作.

<?php

class EmailShell extends Shell {

    public function main() {
        $this->out('Test');
    }

}
?> 
Run Code Online (Sandbox Code Playgroud)

这样就可以在控制台中成功输出Test

蛋糕邮件主要

但后来我找不到如何调用控制器的动作.我试过了

$这 - > requestAction( '/控制器/动作');

我还尝试从shell中的main函数进行调用.

我试图将控制器包含在$ uses变量中,就像我使用模型一样,但是没有用(并且我觉得这没有意义)

我不认为创建任务是解决方案,因为我不想复制sendEmails函数,因此我正在寻找一种方法来从shell或其他任何东西调用控制器的操作!

可能有一些我遗漏的理论,谢谢


我将一些方法从控制器移动到模型,我可以从shell调用它们.

App::import('Component', 'Email');

class SendMemosShell extends Shell {

    var $uses = array(
        'Memo',
    );

    public function main() {

    }

    public function sendEmails () {
        $this->Email =& new EmailComponent(null);
        $memoList = $this->Memo->getMemos();
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

这个链接有助于 …

php shell cron controller cakephp

6
推荐指数
1
解决办法
8949
查看次数

文本颜色与firefox正确显示,但不与ie显示

我使用PHP,当我点击提交按钮时,我有一些文本在同一页面上显示为红色.这适用于Firefox,但文本仍然是黑色的IE7和IE8.

这是视图代码

if(isset($file_title)) {
    echo '<text class="validation">'.$file_title.'</text>';
}
Run Code Online (Sandbox Code Playgroud)

和CSS

#content text.validation {
    color:red;
}
Run Code Online (Sandbox Code Playgroud)

html css php firefox internet-explorer

1
推荐指数
1
解决办法
101
查看次数

标签 统计

php ×2

cakephp ×1

controller ×1

cron ×1

css ×1

firefox ×1

html ×1

internet-explorer ×1

shell ×1