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 相关文章推荐
ADODB的数据库封包程序库
Dec 31 PHP
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
PHP三层结构(上) 简单三层结构
Jul 04 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
PHP超级全局变量数组小结
Oct 04 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
Sep 27 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
PHP验证终端类型是否为手机的简单实例
Feb 07 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
Laravel服务容器绑定的几种方法总结
Jun 14 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
PHP4在Windows2000下的安装
2006/10/09 PHP
一个取得文件扩展名的函数
2006/10/09 PHP
PHP 远程关机实现代码
2009/11/10 PHP
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
ajax 的post方法实例(带循环)
2011/07/04 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
朴素贝叶斯算法的python实现方法
2014/11/18 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
Python生成器以及应用实例解析
2018/02/08 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
python进行两个表格对比的方法
2018/06/27 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
Python3.9新特性详解
2020/10/10 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
2014年食品安全工作总结
2014/12/04 职场文书
爱心助学感谢信
2015/01/21 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
Java的Object类的九种方法
2022/04/13 Java/Android