1. 程式人生 > >thinkphp3.2 Cli定時任務

thinkphp3.2 Cli定時任務

最近要使用thinkphp3.2版本的cli模式,手動執的話沒有問題,比如php /www/index.php home/article/get 這樣沒有問題,但是一般用cli模式都是定時任務比較多,這個時候寫到定時任務的時候,比如 0 * * * * * php /www/index.php home/article/get 這樣就會出現引入ThinkPHP.php失敗的問題,這個問題算是比較容易解決的,但是後來還有其他各種報錯,經過檢視相關核心程式碼,終於找到無需修改程式碼,就可以輕易使用cli模式的方法。

步驟如下:
1、官方下載的框架檔案裡面的index.php檔案引入其他檔案使用的是相對路徑,這導致了定時執行的時候引入ThinkPHP.php檔案不存在的問題,修改成絕對路徑即可。

define( 'APP_PATH', dirname(__FILE__).'/Application/' ); 
require dirname( __FILE__).’/ThinkPHP/ThinkPHP.php';

2、思維要倒回去第半步,剛剛說index.php檔案的相對路徑跟絕對路徑的問題,但是執行cli模式的時候,我們的入口檔案要有別於通過web服務訪問的index.php檔案,比如增加cli模式的入口檔案cli.php,內容跟index.php的一樣,同時增加一句話
define(‘APP_MODE’,'cli');
定義APP的執行模式。此時,我們有兩個入口檔案,一個是web服務訪問方式的index.php,另一個是cli模式訪問的cli.php

3、在路徑 /ThinkPHP/Mode 下面有個檔案,名字叫做common.php ,複製一份出來,命名為cli.php,然後把裡面引入日誌類的程式碼註釋或者刪除掉
'Think\Log' => CORE_PATH . ‘Log'.EXT,

4、刪除快取下面的所有快取——記得是所有

5、再囉嗦一句,以後cli模式呼叫的時候,就用cli.php入口檔案,比如定時任務 0 * * * * php /www/cli.php home/article/get ,如果是web服務訪問,則依然使用index.php檔案

6、也可以利用curl   0 */2 * * * curl http://rl.chuangjiangnet.cn/index.php/open/test 每兩小時執行