在我的博客里有一些文章是和解码或者处理文件有关,其中有些自动化工作比较简单,使用了一些PHP程序来编写处理,这样写起程序来也比较快,因为是纯过程的任务,不想用C#来处理。

写完PHP的脚本程序后,保存在文件了,按大多数人的理解,可能是会做一个WEB服务,然后通过浏览器去访问一下这个文件,它就运行了,其实大可不必如此,因为PHP的程序本身就提供了命令行的运行方式,直接在命令行里运行即可,不必为了运行个文件去搞一个WEB服务在电脑里(对我这种人来说,PHP就是为了写脚本)。

下面介绍几个使用命令行运行PHP的方法,假设你已经配置好了PHP在电脑里的环境变量,已完成了在CMD窗口中直接写php就能直接运行的配置,以WINDOWS为例,在Linux里的用法,一样的。

一、基础的运行PHP文件方法

PHP
php -f php文件

示例:

PHP
<?php
echo 100+200;
echo "\r\n";
echo "这是一个通过命令行直接运行的脚本";
?>

运行结果:

可以看到它已经计算了 100+200 的结果,输出了300,并且按程序要求换了行

二、在运行过程中接收人工输入的内容,然后处理

作为命令行程序,肯定会有需要交互的情况,输入内容,然后处理,这里需要使用三个常量:

STDIN :标准的输入设备
STDOUT: 标准的输出设备
STDERR :标准的错误设备

可以在PHP脚本里使用这三个常量,接受输入,或者显示处理和计算的结果。

下面是示例:

PHP
<?php
//输出一个提示
fwrite(STDOUT, "写一个数字: ");
//接收一个输入
$num = fgets(STDIN);
//处理后输出
fwrite(STDOUT, $num * 100);
?>

运行结果:

可以看到输入100之后,输出10000,乘以了100,说明已经正常接收了输入和计算后输出

三、在命令行中直接带上参数,做为脚本变量直接使用

如果在脚本程序中需要直接带入参数,也是可以的,比如脚本已经写好,根据不同的工作需求带上不同的参数。

这需要使用PHP自带的两个特殊变量:

$argv :命令行中的参数将保存为该变更的数组元素

$argc :它用来保存$argv数组里元素的个数

下面是示例:

PHP
<?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脚本程序的更多相关文章

  1. 在命令行终端运行 Elisp 脚本

    通常,我们在 Emacs 中运行 Elisp 代码片段,但是也可能需要在命令行终端运行 Elisp 脚本程序.在命令行终端运行 Elisp 脚本需要使用 --script 选项,例如: emacs - ...

  2. 使用命令行方式运行 JMeter 脚本

    For non-interactive testing, you may choose to run JMeter without the GUI. To do so, use the followi ...

  3. sbit命令行中运行scala脚本

    一般sbit编译器采成了scala运行工具.启动sbit命令行,输入console,命令行自动切换到scala编辑器面. scala>:paste 然后手动将XXX.scala中的代码拷贝到界面 ...

  4. 如何在CLI命令行下运行PHP脚本,同时向PHP脚本传递参数?

    <?php/* //命令行输入输出流fwrite(STDOUT,"Enter your name:"); $name = trim(fgets(STDOUT)); fwrit ...

  5. SoapUI命令行方式运行

    http://stackoverflow.com/questions/9220132/soapui-groovy-script-calls-to-command-line SoapUI支持用命令行方式 ...

  6. jmeter命令行模式运行,实时获取压测结果

    jmeter命令行模式运行,实时获取压测结果 jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式: sh jmeter.sh -n -t my-script. ...

  7. FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑

    FFmpeg_Tutorial FFmpeg工具和sdk库的使用demo 一.使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑 1.基本介绍 对于每一个从事音视频技术开发的工程师,想必没 ...

  8. Jmeter使用非 GUI 模式,即命令行模式运行实例讲

    转载:http://www.cnblogs.com/leeboke/p/5238269.html 参考资料:https://girliemangalo.wordpress.com/2009/10/29 ...

  9. 命令行模式运行jmeter,主从方式运行jmeter

    jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式: sh jmeter.sh -n -t my-script.jmx -R 10.6.5.31,10.6.5 ...

  10. pycharm中可以运行的程序,在命令行中运行提示模块不存在的问题

    运行模块(包含main函数的模块),在模块开头添加以下代码,原因是pycharm运行python脚本时,会自动添加以下代码,将当前库加入到系统库目录集合中,在命令行中运行需要手动添加import os ...

随机推荐

  1. drf-三大认证源码分析、基于APIView编写分页、异常处理

    1.权限源码分析 1.APIView源码497行:self.initial(request, *args, **kwargs)中进行了三大认证. 2.在initial的源码中,以下三行代码是进行三大认 ...

  2. Codeforces Round #851 (Div. 2) A-E

    比赛链接 A 题意 给一串只包含 \(1,2\) 的数,找到最小的 \(k\) 使得 \(\prod_{i=1}^k a_i = \prod_{i=k+1}^n a_i\) . 题解 知识点:枚举. ...

  3. Linux上安装jdk Tomcat mysql redis等

    1.安装JDk  1.1这里使用xshell中xfxp进行文件的上传,将jdk二进制包上传到Linux服务器上 下载地址:https://www.oracle.com/java/technologie ...

  4. vscode安装教程(含插件配置)

    1.下载 下载地址:Download Visual Studio Code VS code,全称Visual Studio Code,是Microsoft(微软)在2015年4月30日发布的,编写现代 ...

  5. TF坐标

    1.简介 TF是一个让用户随时间跟踪多个坐标系的功能包,它使用树形数据结构,根据时间缓冲并维护多个坐标系之间的坐标变换关系. 2.TF工具 tf_monitor :查看TF树中所有坐标系的发布状态 t ...

  6. Istio 升级后踩的坑

    背景 前段时间我们将 istio 版本升级到 1.12 后导致现有的应用监控有部分数据丢失(页面上显示不出来). 一个是应用基础信息丢失. 再一个是应用 JVM 数据丢失. 接口维度的监控数据丢失. ...

  7. shell:判断某个变量是否包含字符串/变量的方法

    尝试了有3种方法: 1.使用"=~"符号,注意前后必须要有空格! ** 可以输出正确结果,被匹配的字符串必须要有引号括起来!** [clouder@ana53 bin]$ a1=' ...

  8. MQ收到无序的消息时如何进行业务处理

    业务背景 跟第三方系统做对接,双方通过ActiveMQ进行通信,消息之间是有内在关联的,也就是消息本来应该是有业务顺序的,但由于一些原因,现在收到消息是乱序的,这种情况下做业务处理就有一点小问题了 方 ...

  9. JZOJ 4496. 【GDSOI 2016】第一题 互补约数

    \(\text{Problem}\) 求 \[\sum_{i=1}^n \sum_{d|n} \gcd(d, \frac{i}{d}) \] 有 \(n \le 10^{11}\) \(\text{A ...

  10. GDOI2021游记

    \(\text{Day0}\) 4月9日抵达深圳耀华实验学校 宿舍在迷你公寓,竟然是女生公寓?!! 我想起了 \(b\) 站看到的一个 \(NOI\) 全国总决赛的纪录片(惊人的相似) 不过确实还行 ...