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 Google的translate API代码
Dec 10 PHP
php empty()与isset()区别的详细介绍
Jun 17 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
Jul 04 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
Thinkphp单字母函数使用指南
May 08 PHP
Yii2框架实现数据库常用操作总结
Feb 08 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
laravel 解决强制跳转 https的问题
Oct 22 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 PHP
php如何实现数据库的备份和恢复
Nov 30 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下使用以下代码连接并测试
2008/04/09 PHP
php与php MySQL 之间的关系
2009/07/17 PHP
header导出Excel应用示例
2014/01/24 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
python strip()函数 介绍
2013/05/24 Python
Python批量转换文件编码格式
2015/05/17 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
pytest中文文档之编写断言
2019/09/12 Python
Python turtle库的画笔控制说明
2020/06/28 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
自动化专业毕业生自荐信
2013/11/01 职场文书
大学生的网上创业计划书
2013/12/31 职场文书
建筑经济管理专业求职信分享
2014/01/06 职场文书
高三家长寄语
2014/04/03 职场文书
副总经理岗位职责
2015/02/02 职场文书
Python Parser的用法
2021/05/12 Python
python实现简单石头剪刀布游戏
2021/10/24 Python
深入理解go缓存库freecache的使用
2022/02/15 Golang