CLI模式使用说明
DoitPHP的CLI模式是指DoitPHP在命令行下运行。由于在命令行下,即不支持$_POST,也不支持$_GET等,所以注定了CLI模式下运行DoitPHP框架编写的程序有所不同。
首先、入口文件内容不一样。非CLI模式运行下的入口文件(默认index.php)的代码内容为:
- define('IN_DOIT', true);
- /**
- * 定义项目所在路径(根目录):APP_ROOT
- */
- define('APP_ROOT', dirname(__FILE__));
- /**
- * 加载DoitPHP框架的初始化文件,如果必要可以修改文件路径
- */
- require_once APP_ROOT . '/doitphp/DoitPHP.php';
- $config = APP_ROOT . '/application/config/application.php';
- /**
- * 启动应用程序(网站)进程
- */
- Doit::run($config);
而CLI模式下的入口文件,内容为:
- define('IN_DOIT', true);
- /**
- * 定义项目所在路径(根目录):APP_ROOT
- */
- define('APP_ROOT', dirname(__FILE__));
- /**
- * 加载DoitPHP框架的初始化文件,如果必要可以修改文件路径
- */
- require_once APP_ROOT . '/doitphp/DoitPHP.php';
- $config = APP_ROOT . '/application/config/application.php';
- /**
- * 启动应用程序(CLI)进程
- */
- Doit::execute($config);
由上面两个文件的代码可以看出,在非CLI模式运行下的入口文件,启动应用时的代码是:Doit::run($config);
而CLI模式下启动应用时的代码是:Doit::execute($config);
其次,获取参数时的类方法不同。在非CLI模式运行下的文件在获取请求参数时,使用$this->post()
, $this->get()
,或$this->getParams()
,而在CLI模式下,获取参数时,仅$this->getCliParams()
可以使用。
再次,访问网址不同(这是有用的废话,哈~),在非CLI模式运行下的文件访问网址为:http://yourdomains/index.php,而在CLI模式下入口文件调用则是:php -f 入口文件路径 controllername actionname。如:
- /usr/local/php5/bin/php /www/htdocs/demo/cli.php controllername actionname
模式: php -f 项目入口文件(cli.php)路径 Controller名称 Action名称 —参数1=参数1值 —参数2=参数2值
除上面几处不同之外,在Controller文件,Model文件开发大都相同。在CLI模式下,视图功能比较要求就相对比较简单。大多CLI模式下运行的程序都是网站后台数据处理。一般情况下用在crontab里调用,或者deamon里调用。
举例说明
例一、
- public function indexAction() {
- $name = $this->getCliParams('name');
- echo 'The name is:', $name;
- }
使用 php -f 项目入口文件路径 Controller名称 Action名称 —name=doitphp 这个命令访问时,看下上面的程序执行是否正常。
原文: http://www.doitphp.com/index/documentation/?articleid=62