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实现多级树型菜单
Oct 09 PHP
Php获取金书网的书名的实现代码
Jun 11 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
Nov 14 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
提高php编程效率技巧
Aug 13 PHP
8个必备的PHP功能开发
Oct 02 PHP
PHP如何将XML转成数组
Apr 04 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
php从数据库中读取特定的行(实例)
Jun 02 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 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中的串行化变量和序列化对象
2006/09/05 PHP
PHP实现MySQL更新记录的代码
2008/06/07 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
给ECShop添加最新评论
2015/01/07 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
如何在PHP中使用数组
2020/06/09 PHP
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
jQuery实现的AJAX简单弹出层效果代码
2015/11/26 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
详解Python传入参数的几种方法
2019/05/16 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
python django生成迁移文件的实例
2019/08/31 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
Python实现壁纸下载与轮换
2020/10/19 Python
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
班班通校本培训方案
2014/03/12 职场文书
保护环境倡议书300字
2014/05/19 职场文书
作风建设演讲稿
2014/05/23 职场文书
市场营销工作计划书
2014/09/15 职场文书
医院反腐倡廉演讲稿
2014/09/16 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2014年会计工作总结
2014/11/27 职场文书
盗窃案辩护词
2015/05/21 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server