1. 程式人生 > >thinkphp3.2 cli模式的正確使用方法

thinkphp3.2 cli模式的正確使用方法

出現 def 文件 服務 文件引入 定時執行 name 無需 思維

最近要使用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文件

thinkphp3.2 cli模式的正確使用方法