php 获取命令行参数
2021/6/29 12:50:47
本文主要是介绍php 获取命令行参数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
通常PHP都做http方式请求了,可以使用GET or POST方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参。
1.使用$argv or $argc参数接收
$argc
=> 参数个数
$argv
=> 参数 数组类型
/var/www/swoft # php bin/swoft rpc:start insw=qwewewe 接收到3个参数array(3) { [0]=> string(9) "bin/swoft" [1]=> string(9) "rpc:start" [2]=> string(12) "insw=qwewewe" }
2.使用getopt函数
规则类似shell里的getopt
getopt('p:t:')
php代码: $arr = getopt('p:t:'); var_dump($arr); linux 执行: --------------------- /var/www/swoft # php bin/swoft -p 8080 -t http rpc:start array(2) { ["p"]=> string(4) "8080" ["t"]=> string(4) "http" }
问题:多台机器共用一份swoft代码,配置文件怎么解决
思路
- 调整输入的启动swoft框架的命令 php bin/swoft rpc:start 在后追加扩展命令ext_init
- 在app\server\swoft\bin\bootstrap.php中获取ext_init的命令
- 再把获取的命令传递到init.sh中
- 然后在init.sh中根据命令内容把结果写入.env中
实际操作:
获取命令行的
$retCall = " "; if ($extInitCalls = strstr($argv[$argc - 1], 'ext_init')) { $initCalls = (explode('=', $extInitCalls))[1]; if ($calls = strstr($initCalls, '?')) { $calls = explode('?', $initCalls); foreach ($calls as $key => $call) { $retCall .= str_replace(":"," ", $call)." "; } } else { $retCall .= str_replace(":"," ", $initCalls)." "; } } exec("sh /www/init.sh ".$retCall, $result, $status);
这篇关于php 获取命令行参数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享
- 2024-11-01开源 PHP 商城项目 CRMEB 安装和使用教程
- 2024-11-01用php和mysql写无限分类,有哪几种方法-icode9专业技术文章分享
- 2024-10-31php数据分表导出时部分数据无法导出什么原因-icode9专业技术文章分享
- 2024-10-30有经验的 PHP 开发者学习一门新的编程语言,有哪些推荐的有前景的语言-icode9专业技术文章分享
- 2024-10-21php 检测图片是否篡改过-icode9专业技术文章分享
- 2024-10-20fruitcake/php-cors 该怎么使用-icode9专业技术文章分享
- 2024-10-18PHP7.1可以使用哪个版本的swoole-icode9专业技术文章分享