如何使用命令行直接运行PHP脚本程序

在我的博客里有一些文章是和解码或者处理文件有关,其中有些自动化工作比较简单,使用了一些PHP程序来编写处理,这样写起程序来也比较快,因为是纯过程的任务,不想用C#来处理。
写完PHP的脚本程序后,保存在文件了,按大多数人的理解,可能是会做一个WEB服务,然后通过浏览器去访问一下这个文件,它就运行了,其实大可不必如此,因为PHP的程序本身就提供了命令行的运行方式,直接在命令行里运行即可,不必为了运行个文件去搞一个WEB服务在电脑里(对我这种人来说,PHP就是为了写脚本)。
下面介绍几个使用命令行运行PHP的方法,假设你已经配置好了PHP在电脑里的环境变量,已完成了在CMD窗口中直接写php就能直接运行的配置,以WINDOWS为例,在Linux里的用法,一样的。
一、基础的运行PHP文件方法
php -f php文件
示例:
<?php
echo 100+200;
echo "\r\n";
echo "这是一个通过命令行直接运行的脚本";
?>
运行结果:

可以看到它已经计算了 100+200 的结果,输出了300,并且按程序要求换了行
二、在运行过程中接收人工输入的内容,然后处理
作为命令行程序,肯定会有需要交互的情况,输入内容,然后处理,这里需要使用三个常量:
STDIN :标准的输入设备
STDOUT: 标准的输出设备
STDERR :标准的错误设备
可以在PHP脚本里使用这三个常量,接受输入,或者显示处理和计算的结果。
下面是示例:
<?php
//输出一个提示
fwrite(STDOUT, "写一个数字: ");
//接收一个输入
$num = fgets(STDIN);
//处理后输出
fwrite(STDOUT, $num * 100);
?>
运行结果:

可以看到输入100之后,输出10000,乘以了100,说明已经正常接收了输入和计算后输出
三、在命令行中直接带上参数,做为脚本变量直接使用
如果在脚本程序中需要直接带入参数,也是可以的,比如脚本已经写好,根据不同的工作需求带上不同的参数。
这需要使用PHP自带的两个特殊变量:
$argv :命令行中的参数将保存为该变更的数组元素
$argc :它用来保存$argv数组里元素的个数
下面是示例:
<?php
echo "变量的个数是:" . $argc . "\r\n";
echo "第1个参数:" . $argv[0] . "\r\n";
echo "第2个参数:" . $argv[1] . "\r\n";
echo "第3个参数:" . $argv[2] . "\r\n";
echo "第4个参数:" . $argv[3] . "\r\n";
?>
运行结果:

在PHP中,第一个参数永远是脚本文件本身,所以可以看到给出了正确的变量数,也输出了正确的各个变量,注意,如果变量中有空格,需要引号把有空格的变量内容括起来。
以上的几个内容,已经几乎能满足写脚本程序需要用到的命令行方法,会PHP的话,看到这里应该没啥不理解的了。
如何使用命令行直接运行PHP脚本程序的更多相关文章
- 在命令行终端运行 Elisp 脚本
通常,我们在 Emacs 中运行 Elisp 代码片段,但是也可能需要在命令行终端运行 Elisp 脚本程序.在命令行终端运行 Elisp 脚本需要使用 --script 选项,例如: emacs - ...
- 使用命令行方式运行 JMeter 脚本
For non-interactive testing, you may choose to run JMeter without the GUI. To do so, use the followi ...
- sbit命令行中运行scala脚本
一般sbit编译器采成了scala运行工具.启动sbit命令行,输入console,命令行自动切换到scala编辑器面. scala>:paste 然后手动将XXX.scala中的代码拷贝到界面 ...
- 如何在CLI命令行下运行PHP脚本,同时向PHP脚本传递参数?
<?php/* //命令行输入输出流fwrite(STDOUT,"Enter your name:"); $name = trim(fgets(STDOUT)); fwrit ...
- SoapUI命令行方式运行
http://stackoverflow.com/questions/9220132/soapui-groovy-script-calls-to-command-line SoapUI支持用命令行方式 ...
- jmeter命令行模式运行,实时获取压测结果
jmeter命令行模式运行,实时获取压测结果 jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式: sh jmeter.sh -n -t my-script. ...
- FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑
FFmpeg_Tutorial FFmpeg工具和sdk库的使用demo 一.使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑 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 ...
- pycharm中可以运行的程序,在命令行中运行提示模块不存在的问题
运行模块(包含main函数的模块),在模块开头添加以下代码,原因是pycharm运行python脚本时,会自动添加以下代码,将当前库加入到系统库目录集合中,在命令行中运行需要手动添加import os ...
随机推荐
- C#如何提高代码质量(一)
代码部分 1.正确操作字符串 尽量少装箱 String str1 = "str2"+9.ToString(); 避免分配额外的内存空间 StringBuilder 2.使用默认转型 ...
- python 取整方法
1.向下取整: int() 2.向上取整:ceil() 使用ceil()方法时需要导入math模块,例如 3.四舍五入:round() 4.分别取 将整数部分和小数部分分别取出,可以使用math模块中 ...
- PopClip使用教程图文详解 2022.12亲测有效
PopClip简介 PopClip mac版是Macos上一款增强型复制粘贴工具,当你选中文字后,PopClip会自动弹出复制.剪切.粘贴.搜索等等操作,除了复制粘贴外,PopClip还提供了很多的扩 ...
- 华为云发布分布式编译构建系统CodeArts Build
摘要:2月14日,华为云发布分布式编译构建系统CodeArts Build,旨在支撑企业实现高效的软件开发,缩短产品上市周期,帮助企业的软件产品快速形成关键竞争力. 本文分享自华为云社区<唯快不 ...
- Could not execute query ---> MySql.Data.MySqlClient.MySqlException: You have an error in your SQL sy
1.出现问题 执行sql查询时出现如题错误,原因是安装mysql-connector-net的版本过高,当前项目在用的mysql版本不符合:关于当前安装的mysql-connector-net版本的查 ...
- axios实现跨域的问题 vue实现跨域
第一次写博客,主要是记录自己的一些新的,不好的地方忘各位多多指点,请不要吐槽: 按踩坑顺序叙述.本人对http了解太少,所以坑踩得较多. 1.开始进行跨域时,知道vue2.0官方推荐axios进行aj ...
- element-UI button按钮颜色回显(一)
按钮: <el-button id="manyou" @click="Ismovement" type="primary" >漫 ...
- 基于FLink实现的实时安全检测(一段时间内连续登录失败20次后,下一次登录成功场景)
研发背景 公司安全部目前针对内部系统的网络访问日志的安全审计,大部分都是T+1时效,每日当天,启动Python编写的定时任务,完成昨日的日志审计和检测,定时任务运行完成后,统一进行企业微信告警推送.这 ...
- JZOJ 4308.长寿花
题面 思路 这种题当然要 \(dp\) 啦 设 \(g_{i,j}\) 表示前 \(i\) 个位置用指定的 \(j\) 种颜色装饰(即用颜色 \(1..j\) 来装饰) 那么 \(g_{i,j}=g_ ...
- ABAP 辨析CO|CN|CA|NA|CS|NS|CP|NP
1.文档说明 本篇文档将通过举例,解析字符的比较运算符之间的用法和区别,涉及到的操作符:CO|CN|CA|NA|CS|NS|CP|NP 2.用法和区别 用法总览 以下举例,几乎都使用一个字符变量和一个 ...