首页 > PHP资讯 > PHP培训技术 > CakePHP中的外部任务,自动执行脚本

CakePHP中的外部任务,自动执行脚本

PHP培训技术

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 作业中指定完整路径将帮助确保正确执行,而不管执行作业的是哪个用户。

PHP培训技术

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持8不支持0