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 相关文章推荐
用ODBC的分页显示
Oct 09 PHP
PHP的面试题集,附我的答案和分析(一)
Nov 19 PHP
PHP print类函数使用总结
Jun 25 PHP
str_replace只替换一次字符串的方法
Apr 09 PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
遍历echsop的region表形成缓存的程序实例代码
Nov 01 PHP
Zend Framework路由器用法实例详解
Dec 11 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
PHP正则表达式之RCEService回溯
Apr 11 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
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
你需要知道的10个最佳javascript开发实践小结
2012/04/15 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
python实现简单的socket server实例
2015/04/29 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
详解Python自建logging模块
2018/01/29 Python
图解Python变量与赋值
2018/04/03 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
python 字符串格式化的示例
2020/09/21 Python
python多线程和多进程关系详解
2020/12/14 Python
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
物流管理应届生求职信
2013/11/07 职场文书
自动化毕业生专业自荐书范文
2014/02/04 职场文书
酒店总经理助理职责
2014/02/12 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
2015年中个人总结范文
2015/03/10 职场文书
导游词之江苏同里古镇
2019/11/18 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
Vue接口封装的完整步骤记录
2021/05/14 Vue.js