使用shell的cronjobs cakephp,需要帮助

时间:2011-04-07 06:22:43

标签: php cakephp cron

我在cakephp中创建一个shell来打印模型中的数据,遵循本教程关于Creating Shells & Tasks

class ReportShell extends Shell {
    var $uses = array('Report');
    function main() {
        $reports = $this->Report->findAll();
        foreach($reports as $report) {
            $this->out('Report Name: ' . $report['Report']['name'] . "\n");
        }

        $this->out("Total Reports: " . count($reports) . "\n"); 
    }
}

但是当我在控制台上输入$cake report时,我收到以下错误消息:

Fatal error: Unable to load DataSource file dbo\dbo_mysql_ex.php in 
C:\xampp\htdocs\cake_test\core\cake\libs\model\connection_manager.php on line 178

任何想法我该如何解决这个问题?

更新: 在@olezhek建议之后,我编辑了我的database.php文件并使用“mysql”而不是“mysql_ex”,我确实得到了一个不同的错误信息,这表明我在模型上有一个未定义的函数,我甚至没有加载我的报告shell,这怎么可能?

感谢

注意:我已经建立了数据库以及表(报告),字段和条目,并且我设法使用浏览器查看表条目。

2 个答案:

答案 0 :(得分:0)

我认为您正在尝试使用自定义mysql驱动程序(例如,用于调试查询)。您应该在/app/config/database.php中将驱动程序名称更改为“mysql”。或者,如果您仍想跟踪查询,则应创建/app/models/datasources/dbo/dbo_mysql_ex.php并将代码http://bin.cakephp.org/saved/32872放入其中。

答案 1 :(得分:0)

应该$ this->报告 - > findAll();不是$ this->报告 - > find('all');?

旁注:你为什么要在cron中运行它,echo不会做什么,因为没有人会看到它