2016-04-21 145 views
2

我對CakePHP的3.2項目工作..計劃任務介紹CakePHP

我有一個Property實體..

當用戶創建一個財產,管理員必須驗證它成爲活躍 .. 之後,我把現在的日期+ 10天例如date_of_expiration ...

我想要的是,這屬性在此日期到期(當前日期+ 10天)。通過改變一個名爲場status活躍不活躍 ..

我在谷歌搜索,我發現我NEAD稱爲Sheduled任務 ..

我問這樣做CakePHP中3.2

回答

4
  1. Create Shell使用函數查找過期的屬性並將該值更改爲非活動狀態。
  2. Run Shell from CronJob每天00:00:00
+0

是Cron工作最好的方式,沒有其他解決方案,因爲我必須找到多個解決方案? –

+0

是最簡單的方法。 Cron在後臺運行,在預定的時間調用shell腳本,它執行你所需要的。 – Salines

+0

這可以用於Windows? –

-1

你可以建立一個cron job這將調用您的控制器功能的最佳途徑。然後,您的功能將選擇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作業「用戶」未登錄。

+0

走錯了路,cron的需要調用CakePHP的外殼,而不是控制方法 – Salines

+0

@Salines在項目中,我設置了一個cron作業類似呼籲從控制器我的方法。它基本上只是調用指定的URL。它工作沒有任何問題,非常可靠。感謝您的downvote ...但我也喜歡殼的想法。 – st2erw2od

+0

今天的人們喜歡抽象一切的問題,即使是可以的CLI也可以儘可能地抽象。他們稱之爲*替換系統* – ash