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为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 PHP
PHP抽象类 介绍
Jun 13 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
php导出excel格式数据问题
Mar 11 PHP
php异步多线程swoole用法实例
Nov 14 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
PHP+MYSQL中文乱码问题
Jul 01 PHP
php算法实例分享
Jul 14 PHP
php实现的简单中文验证码功能示例
Jan 03 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
php识别翻转iphone拍摄的颠倒图片
May 17 PHP
PHP字符串中抽取子串操作实例分析
Jun 22 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连mysql和oracle数据库性能比较
2006/10/09 PHP
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
php如何连接sql server
2015/10/16 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
JS中表单的使用小结
2014/01/11 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
Python中字典的基础知识归纳小结
2015/08/19 Python
用Python写冒泡排序代码
2016/04/12 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
Python 解析简单的XML数据
2020/07/24 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
2020/10/12 Python
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
法律进机关实施方案
2014/03/12 职场文书
考核工作实施方案
2014/03/30 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
学校教学管理制度
2015/08/06 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
MySQL分区路径子分区再分区
2022/04/13 MySQL
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL