1. 程式人生 > >yii2 做定時任務 crontab

yii2 做定時任務 crontab

1. 在yii2 專案中 ,定時任務是放在

2. 在專案裡邊遇到的坑

剛開始在做專案的時候,將專案的 命令空間  由  app 改為  supermarket

定時任務的程式碼寫完了,

1.  先在 本地  用  windows  的  cmd 去測試  :輸入如下命令 :

進入到專案的根目錄 (xiaoniao-new) ,使用如下命令 :

解釋 : php  yii  控制器/方法名 

注意 :如上的命令是在  php ,被加入環境變數的情況下,可以直接使用 php 

檢視 php 是否加入環境變數的命令 : php -v

2. 執行了 php  yii  控制器/方法名  命令之後,直接報錯

報錯原因是因為,同事之前將專案跟目錄下面的一些檔案刪除了,我去 恰恰用到的兩個檔案全被刪了

 解決 : 重新下載的框架程式碼,加上了這兩個檔案在去執行上面的命令

3. 報錯   db 這個元件應該有個 class 的值

原因 : yii2 控制檯執行的時候,載入的是 配置檔案  config 裡面的  console.php 這配置檔案

開啟 console.php 檔案,果然沒有 db  這個項 的配置 ,(疑問: 那為什麼在專案裡面訪問的時候,就沒有報錯了,哈哈哈,因為在專案裡邊訪問的時候,用的不是這配置檔案啊,這個配置檔案只有在  定時任務的時候才會用啊)

乖乖的加上  db 的配置,在去執行 剛才的命令  :   php  yii  控制器/方法名 

4. 又出現問題了 : 無法請求 channel-statistics/output  

這個還是要仔細看報錯資訊才能發現喔

5. 根據之前的經驗,分析可能出現的原因,左思右想,明明存在,為什麼訪問不了

想想之前的經歷  :  可能是 由於  名稱空間的問題???由於名稱空間不一致,導致無法訪問

6. 開啟  配置檔案   console.php

commands 下,檔案對應的 名稱空間是一致的呀,為什麼會不能執行了

萬般無奈之下,打開了 yii2 框架原始碼 的 配置檔案 console.php 看看

原始碼裡邊用的是  : app

試著將專案裡邊的    console.php  和  commands 下檔案 對應的名稱空間  都修改為   app ,在去執行剛才的命令

我去,驚喜無處不在,竟然可以執行了

7. 在說說遇到的另一個問題,commands 下的檔案引用的 controller  應該是   

use yii\console\Controller;   而不是  use yii\web\Controller; 這個坑我爬過來了

8. 本地測試完了,該在 linux 伺服器上測試了,上傳程式碼,crontab   建立

1.   crontab -e  開啟 在裡面配置 , 定時任務的程式碼。如下

配置如下程式碼:前面時間控制另行查詢,這裡不做解釋

2. 重新啟動  crontable 命令。

sudo service crond restart

ok.靜靜的等待結果

3. 如果沒有結果,排除錯誤的方法

在終端 直接執行,剛才的配置,等待結果

結果ok , 那就說明

基本能確定  就是   定時任務的時間配置有問題 (自行查詢時間配置格式 解決)!!!!