ThinkPHP3.1.2 使用cli命令行模式运行的方法


Posted in PHP onApril 14, 2020

前言

thinkphp3.1.2 需要使用cli方法运行脚本
折腾了一天才搞定
3.1.2的版本真的很古老

解决

增加cli.php入口文件

define ('APP_NAME','App');
define ('APP_PATH','./App/');
define('APP_DEBUG', true);
define('MODE_NAME','cli');
require './Base/ThinkPHP.php';

注意目录名称:根据实际去改

cli.php文件增加解析模块、方法名、参数

if (!isset($argv[1]) || !isset($argv[2])) {
 exit("格式错误: php cli.php module action {id 1}" . PHP_EOL);
}
# 'URL_MODEL'=>0, 的格式
if ($argc > 3) {
 preg_replace('@(\w+),([^,\/]+)@e', '$_GET[\'\\1\']="\\2";', implode(',',array_slice($argv,3)));
}
$moduleName = $argv[1];
$actionName = $argv[2];
define('MODULE_NAME', $moduleName);
define('ACTION_NAME', $actionName);

下载thinkphp3.1.2 扩展包 【推荐使用】

http://www.thinkphp.cn/down/253.html

放到 /Base/Extend/

ThinkPHP3.1.2 使用cli命令行模式运行的方法

注释掉Log.class.php

ThinkPHP3.1.2 使用cli命令行模式运行的方法

扩展包解析命令行参数的逻辑

ThinkPHP3.1.2 使用cli命令行模式运行的方法

if(C('URL_MODEL')==1) {// PATHINFO 模式URL下面 采用 index.php module/action/id/4
  $depr = C('URL_PATHINFO_DEPR');
  $path = isset($_SERVER['argv'][1])?$_SERVER['argv'][1]:'';
  if(!empty($path)) {
   $params = explode($depr,trim($path,$depr));
  }
  // 取得模块和操作名称
  define('MODULE_NAME', !empty($params)?array_shift($params):C('DEFAULT_MODULE'));
  define('ACTION_NAME', !empty($params)?array_shift($params):C('DEFAULT_ACTION'));
  if(count($params)>1) {
   // 解析剩余参数 并采用GET方式获取
   preg_replace('@(\w+),([^,\/]+)@e', '$_GET[\'\\1\']="\\2";', implode(',',$params));
  }
  }else{// 默认URL模式 采用 index.php module action id 4
  // 取得模块和操作名称
  define('MODULE_NAME', isset($_SERVER['argv'][1])?$_SERVER['argv'][1]:C('DEFAULT_MODULE'));
  define('ACTION_NAME', isset($_SERVER['argv'][2])?$_SERVER['argv'][2]:C('DEFAULT_ACTION'));
  if($_SERVER['argc']>3) {
   // 解析剩余参数 并采用GET方式获取
   preg_replace('@(\w+),([^,\/]+)@e', '$_GET[\'\\1\']="\\2";', implode(',',array_slice($_SERVER['argv'],3)));
  }
  }

总结

到此这篇关于ThinkPHP3.1.2 使用cli命令行模式运行的文章就介绍到这了,更多相关ThinkPHP3.1.2 cli命令行模式内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
用PHP的ob_start() 控制您的浏览器cache
Aug 03 PHP
PHP中=赋值操作符对不同数据类型的不同行为
Jan 02 PHP
php中将汉字转换成拼音的函数代码
Sep 08 PHP
php 判断字符串中是否包含html标签
Feb 17 PHP
php批量删除cookie的简单实现方法
Jan 26 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
PHP实现的简单排列组合算法应用示例
Jun 20 PHP
PHP token验证生成原理实例分析
Jun 05 PHP
Thinkphp5.0框架视图view的模板布局用法分析
Oct 12 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
关于PHP5.6+版本“No input file specified”问题的解决
Dec 11 PHP
php在linux环境中如何使用redis详解
Dec 15 PHP
Laravel 框架控制器 Controller原理与用法实例分析
Apr 14 #PHP
Laravel 框架路由原理与路由访问实例分析
Apr 14 #PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 #PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
Apr 14 #PHP
PHP 自动加载类原理与用法实例分析
Apr 14 #PHP
php操作redis常见方法示例【key与value操作】
Apr 14 #PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 #PHP
You might like
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
EXT中xtype的含义分析
2010/01/07 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
angular十大常见问题
2017/03/07 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
python中正则表达式的使用详解
2014/10/17 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
python 标准差计算的实现(std)
2019/07/29 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
Java TransactionAPI (JTA) 主要包含几部分
2012/12/07 面试题
车间组长岗位职责
2013/12/20 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android