web和cli运行模式


web运行模式

就是我们一般的基于web服务器的访问脚本的模式

cli命令行运行模式

一般我们会做命令行的操作,如:定时任务脚本,我们不需要单独写一个php脚本来做,这样不便于管理, 我们可以和开发web模式一样来写命令行脚本,框架会自动判断是web还是cli模式,可以复用已有的modle和业务逻辑,不需要自己写连接MySQL、连接Redis等, 还可以方便的使用框架模型里面的方法来操作数据库.

 推荐的目录结构

  1. /app
  2. |--cli
  3. | |--business
  4. | |--controller
  5. | | |--Cli.php
  6. | | |--Document.php
  7. | |--model
  8. |--web
  9. /cli
  10. |--job
  11. |--index.php //cli模式单一入口文件
  12. /common
  13. |--common
  14. | |--model
  15. | |--provider

怎样调用

  1. php cli/index.php 控制器/动作 参数1=参数值 参数2=参数值 ......

例子:

  1. php cli/index.php document/findOneWords document_id=10009 type=2

这样就会调用cli这个应用(app/cli)下面的控制器Document里面的findOneWords方法

获取参数

方法一:

  1. <?php
  2. namespace app\cli\controller;
  3. class Document extends Cli
  4. {
  5. public function findOneWords()
  6. {
  7. $document_id = (int) self::$params['document_id'];
  8. //...
  9. //业务逻辑、操作...
  10. }
  11. }

方法二:

  1. public function findOneWords($document_id = 0, $type = 0)
  2. {
  3. $document_id = (int) $document_id;
  4. if ($document_id <= 0) {
  5. throw new Exception('param error: document_id param should be greater than 0');
  6. }
  7. ...
  8. 业务逻辑、操作...
  9. }

后台运行

  1. nohu php /data/timophp/app/cli/index.php document/findOneWords document_id=10009 &