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" 尚未登录。
- Create Shell 具有查找过期 属性 并将值更改为非活动的功能。
- Run Shell from CronJob 每天 00:00:00
我从事 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" 尚未登录。
- Create Shell 具有查找过期 属性 并将值更改为非活动的功能。
- Run Shell from CronJob 每天 00:00:00