作者:mobiledu2502894453 | 来源:互联网 | 2013-06-21 08:33
Cake控制台是CakePHPV1.2中的新增功能,它将提供与Cake框架的命令行接口。要创建您自己的命令行任务,需要创建一个shell。shell看上去非常类似您已经创建的控制器。
Cake 控制台是 CakePHP V1.2 中的新增功能,它将提供与 Cake 框架的命令行接口。要创建您自己的命令行任务,需要创建一个 shell。shell 看上去非常类似您已经创建的控制器。
首先在 /column/protected/cakephp/app/vendors/shells 目录中创建 prune.php 文件。这是名为 prune 的新 shell,它将删除发布日期超过 30 天的所有 post。定义一个新类 PruneShells,该类将扩展 shell 类。由于要删除 post,因此 shell 将需要使用 post 模型,您可以使用 $uses 变量来指定。默认情况下,在告诉 Cake 执行 shell 并且不传递任何具体操作时,Cake 将查找一个名为 main 的方法,并且如果找到,则执行该方法。此时,空 shell 看上去将类似清单 1。
现在只需要把代码添加到 main 方法中来删除发布超过 30 天的所有 post。
$cOnditions= array (
"Post.modified" => "<" . date("Y-m-d H:i:s", strtotime("-30 days"))
);
$this->Post->deleteAll($conditions);
要通过命令行执行此脚本,需要告诉 Cake 运行 prune shell。由于所有代码都在 main 方法中,因此它将默认执行。还应当把 app 目录位置告诉给 Cake。如果是从 app 目录运行命令则不必告知 app 目录位置,但是 cron 作业将不会从正确目录执行,除非您告诉它执行下列代码:/column/protected/cakephp/cake/console/cake prune -app /column/protected/cakephp/app/。
将一项 cron 作业调度到午夜运行来执行此 shell 将类似下列代码:00 00 * * * /column/protected/cakephp/cake/console/cake prune -app /column/protected/cakephp/app/。
注:如果把 /column/protected/cakephp/cake/console 目录添加到 PATH 中,则无需指定完整路径,这将使您可以更轻松地使用控制台。在批处理或 cron 作业中指定完整路径将帮助确保正确执行,而不管执行作业的是哪个用户。