CakePHP 上的计划任务

Scheduled Task on CakePHP

我从事 CakePHP 3.2 项目..

我有一个 Property 实体..

当用户创建 属性 时,管理员必须对其进行验证才能激活.. 之后,我在名为 date_of_expiration 的字段中输入当前日期 + 10 天,例如 ...

我想要的是这个 属性 在此日期(当前日期 + 10 天)过期。通过更改名为 status 的字段活跃不活跃..

我在 Google 中搜索,发现我需要调用的 Sheduled Task..

我询问在 CakePHP 3.2 中执行此操作的最佳方法

您可以设置一个 cron job 来调用控制器中的函数。然后,您的函数将 select 来自 properties table 的所有记录,检查 date_of_expiration 是否已过期,然后将 status 设置为 inactive

您必须允许在未登录的情况下调用该方法,并且可能禁用 CSRF 组件(如果您正在使用它):

public function beforeFilter(Event $event){
    $this->Auth->allow('cronjob_expiration_date');

    if(in_array($this->request->action, ['cronjob_expiration_date'])) {
        $this->eventManager()->off($this->Csrf);
    }
}

这是必需的,因为 cron 作业 "user" 尚未登录。

  1. Create Shell 具有查找过期 属性 并将值更改为非活动的功能。
  2. Run Shell from CronJob 每天 00:00:00