1

使用蛋糕 2.1.1。我正在尝试做一个 cron 作业来执行来自控制器的操作。哪种方法是正确的?我有一个带有名为 admin_test 的操作的 OffersController。我希望每 2 小时运行一次此操作。目前我在 app/Console/command/SyncapiShell.php 中做了一个 shell:

class SyncapiShell extends AppShell {
    public $uses = array('Offer');

    public function main() {
       $this->Offer->admin_test();
    }
}

但是我在尝试执行 shell 时遇到 SQLSTATE[42000] 语法错误或访问冲突。我还在使用管理路由、身份验证组件和 ACL。外壳是如何工作的?它忽略了身份验证和 acl 权限?通常,admin_test 操作只能由特定的经过身份验证的用户访问。

谢谢

4

1 回答 1

5

不,这不是正确的做法,但更有可能表明您的应用架构不好。你应该有胖模型和微型控制器。

Shell:uses 将像控制器的 uses 属性和加载模型一样工作。在控制器中,您应该使用模型关联,而不是使用使用加载数千个模型。

重构您的控制器方法并将代码移动到 Offer 模型中。

千层蛋糕

为什么外壳需要身份验证或管理员路由?顾名思义,shell 是一个 shell 程序,而不是一个网站。身份验证基本上由操作系统和运行脚本的用户完成。无论如何,只有有权访问 shell 的人才能运行它。

于 2012-04-17T08:31:14.240 回答