魏长东

weichangdong

thinkphp使用cli模式

看到thinkphp有个Mode文件夹,是不同的运行模式,因为工作中,经常使用命令行下执行php文件,比如为某个系统添加后台执行的crontab。如是就想试试搭建cli的模式。

这是Mode下的文件列表截图

tp-cli1.png

为了实现这个功能,我折腾其实花费了不少气力,但是最后发现其实改动很少,需要做的也很少,但是中间的确是一步一步的调试的。

首先在根目录建立一个cli的文件夹,里面放一个index.php文件,代码如下。

tp-cli2.png

<?php
	define('ROOT_PATH','D:/www/htdocs/wcd/');
    define('THINK_PATH',ROOT_PATH.'ThinkPHP/'); 
    define('APP_NAME', 'cli');             # 这个就是上面文件夹叫cli的
    define('MODE_NAME','cli');//这个很重要,就是表明这是cli模式
    define('APP_PATH','D:/www/htdocs/wcd/cli/'); 
    define('APP_DEBUG', true);       # development cache
    require(THINK_PATH.'ThinkPHP.php');     # entry file

其中路径很重要,貌似我折腾好久的根本原因就是我开始的路劲写的有问题,要用绝对路径。本来是要借用__DIR__,__FILE__,dirname等的函数来实现的,但是为了方便直接写死了。这个目录是我xampp的web目录。

然后在命令行下运行,在cli目录就自动生成好多目录,包括一些缓存存放目录和Lib目录下Action下的例子文件。

IndexAction.class.php文件代码,我稍微租了点修改。

<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
    public function index(){
		echo 'hello';
    }
	public function wcd(){
		echo 'wcd';
	}
}

以下是运行结果:主要是 php D:\www\htdocs\wcd\cli\index.php index/wcd这个命令,是命令行的Mode。

tp-cli3.png