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 , 那就說明

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章