Запланированная задача на CakePHP
Я работаю над Проектом CakePHP 3.2..
У меня есть Property
Сущность..
Когда пользователь создает свойство , администратор должен подтвердить его, чтобы оно стало активным ..
После этого я ввел в поле под названием date_of_expiration
текущую дату + 10 дней, например...
Я хочу, чтобы это свойство истекало в эту дату (текущая дата + 10 дней).. Путем изменения поля с именем status
с активного на неактивного..
Я искал в Google и я обнаружил, что то, что я назвал Запланированной задачей..
Я спрашиваю о лучшем способе сделать это в CakePHP 3.2
2 answers
- Создайте оболочку с функцией для поиска свойства с истекшим сроком действия и изменения значения на неактивное.
- Запускайте оболочку из CronJob каждый день в 00:00:00
Вы можете настроить задание cron, которое будет вызывать функцию в вашем контроллере. Затем ваша функция выберет все записи из вашей таблицы properties
, проверит, истек ли срок действия 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 "пользователь" не вошло в систему.