ThinkPHP3.1.2 使用cli命令行模式运行
ThinkPHP3.1.2 使用cli命令行模式运行
标签(空格分隔): php
前言
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 扩展包 【推荐使用】
放到 /Base/Extend/
- 注释掉Log.class.php
- 扩展包解析命令行参数的逻辑
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.2.3使用cli命令行模式
使用tp3.2.3的cli模式时,报错.加上绝对路径还是报错.所以采用普通模式 if(version_compare(PHP_VERSION,'5.3.0','<')) die('require ...
- jmeter命令行模式运行,实时获取压测结果
jmeter命令行模式运行,实时获取压测结果 jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式: sh jmeter.sh -n -t my-script. ...
- 从命令行模式运行Windows管理工具。
从命令行模式运行Windows管理工具. 分类: Play Windows 2004-08-06 16:39 6076人阅读 评论(3) 收藏 举报 1.可以直接在开始-〉运行里面输入的管理工具: 文 ...
- Jmeter使用非 GUI 模式,即命令行模式运行实例讲
转载:http://www.cnblogs.com/leeboke/p/5238269.html 参考资料:https://girliemangalo.wordpress.com/2009/10/29 ...
- 命令行模式运行jmeter,主从方式运行jmeter
jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式: sh jmeter.sh -n -t my-script.jmx -R 10.6.5.31,10.6.5 ...
- meter命令行模式运行,实时获取压测结果 (没试过 说不定以后要用)
jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式 上面一条命令应该可以满足大部分需求. 使用-R指定节点时,当然要首先在这些节点上启动jmeter-serv ...
- 如何在CLI命令行下运行PHP脚本,同时向PHP脚本传递参数?
<?php/* //命令行输入输出流fwrite(STDOUT,"Enter your name:"); $name = trim(fgets(STDOUT)); fwrit ...
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...
- PHP的CLI命令行运行模式浅析
在做开发的时候,我们不仅仅只是做各种网站或者接口,也经常需要写一些命令行脚本用来处理一些后端的事务.比如对数据进行处理统计等.当然也是为了效率着想,当一个事务有可能会有较长的耗时时,往往会交由服务器的 ...
随机推荐
- C++ 顺序表练习
#include <stdio.h> #include <stdlib.h> #include <string.h> struct Array //定义一个数据存储 ...
- Spark入门(四)--Spark的map、flatMap、mapToPair
spark的RDD操作 在上一节Spark经典的单词统计中,了解了几个RDD操作,包括flatMap,map,reduceByKey,以及后面简化的方案,countByValue.那么这一节将介绍更多 ...
- scrapy-redis使用以及剖析(转)
scrapy-redis是一个基于redis的scrapy组件,通过它可以快速实现简单分布式爬虫程序,该组件本质上提供了三大功能: scheduler - 调度器 dupefilter - URL去重 ...
- 普通索引和唯一索引如何选择(谈谈change buffer)
假设有一张市民表(本篇只需要用其中的name和id_card字段,有兴趣的可以翻看“索引”篇,里面有建表语句) 每个人都有一个唯一的身份证号,且业务代码已经保证不会重复. 由于业务需求,市民需要按身份 ...
- Antd 表格内通过rowClassName实现隔行变色的显示方法(转载)
ant design中 table组件很方便,在项目中遇到了需要实现奇偶行颜色不同以方便阅读的功能,主要用到了rowClassName这一api,通过判断index的奇偶来实现不同的样式分配. row ...
- 【Java面试题】List如何一边遍历,一边删除?
这是最近面试时被问到的1道面试题,本篇博客对此问题进行总结分享. 1. 新手常犯的错误 可能很多新手(包括当年的我,哈哈)第一时间想到的写法是下面这样的: public static void mai ...
- 如何查看QQ坦白说来自谁
近两天QQ新功能的坦白说开始席卷朋友圈,一个醒目的小窗就这样明晃晃出现在QQ对话列表"有人对你说:--"下面我们就来整理一下怎么看到是谁给你发送的坦白说呢? 方法一: 此方法仅限于 ...
- Nacos作为微服务注册中心,爱不释手的感觉
我觉得Nacos用起来还不错 在使用SpringCloud做分布式微服务架构时,注册中心是必不可少的一个组件.目前可以用的主要有:Eureka.Consul.Zookeeper.今天,我们就来说一下A ...
- 2020kali浏览器汉化等配置
0.修改搜索引擎 1. 2. 3.点击左侧搜索,输入language因为我已经修改为中文所以没有查询到结果 4点击搜索更多语言(未汉化未英文)找到chinese后添加 5.要将chinese上移到第一 ...
- django中间件 csrf auth认证
django中间件 能做全局访问频率限制,身份校验,黑名单,白名单 用法: 新建一个文件夹,文件夹新建一个py文件,文件中写如下代码 注意点:你写的类必须继续MiddlewareMixin from ...