ThinkPHP3.1.2 使用cli命令行模式运行的方法
这篇文章主要介绍了ThinkPHP3.1.2 使用cli命令行模式运行的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
前言
thinkphp3.1.2 需要使用cli方法运行脚本
折腾了一天才搞定
3.1.2的版本真的很古老
解决
增加cli.php入口文件
1 2 3 4 5 | define ( 'APP_NAME' , 'App' ); define ( 'APP_PATH' , './App/' ); define( 'APP_DEBUG' , true); define( 'MODE_NAME' , 'cli' ); require './Base/ThinkPHP.php' ; |
注意目录名称:根据实际去改
cli.php文件增加解析模块、方法名、参数
1 2 3 4 5 6 7 8 9 10 11 | 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/
注释掉Log.class.php
扩展包解析命令行参数的逻辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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命令行模式运行的文章就介绍到这了