如何使用命令行直接运行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 ...
随机推荐
- 性能浪费的日志案例-使用Lambda优化日志案例
性能浪费的日志案例 注:日志可以帮助我们快速的定位问题,记录程序运行过程中的情况,以便项目的监控和优化.一种典型的场景就是对参数进行有条件使用,例如对日志消息进行拼接后,在满足条件的情况下进行打印输出 ...
- Failed to find "GL/gl.h" in "/usr/include/libdrm"
环境qt5.12.3 deepin15.10 使用cmake构建项目时报错,网上查询了一下发现时未安装opengl,于是安装便是了 sudo apt install mesa-common-dev 问 ...
- STL关联式容器使用注意、概念总结
引入 继上文 STL序列式容器使用注意.概念总结 继续总结关联式容器的概念以及一些使用事项. 关联式容器与容器适配器 基础容器 STL 中的关联式底层容器:RB tree, hash table,可以 ...
- 11月9日内容总结——单例模式的多种实现方式、pickle序列号模块和选课系统
目录 一.单例模式实现的多种方式 方式一:使用类 方法二:使用metaclass方式(自定义元类) 方法三:自定义双下new 方法四:基于模块的单例模式 二.pickle序列化模块 优势: 缺陷: 方 ...
- LeetCode_单周赛_329
2544. 交替数字和 代码1 转成字符串,逐个判断 class Solution { public int alternateDigitSum(int n) { char[] s = (" ...
- 2.5.scrollView和swiper组件的使用
# scroll-view 可滚动视图区域.用于区域滚动. 需注意在webview渲染的页面中,区域滚动的性能不及页面滚动. 属性说明 属性名 类型 默认值 说明 平台差异说明 scroll-x Bo ...
- Class path contains multiple SLF4J bindings解决
1.根据控制台查看冲突的日志依赖 本工程Maven依赖 <dependencies> <dependency> <groupId>org.slf4j</gro ...
- 学习Java Day10
今天学习了数组的相关知识
- windows C++
#include <Windows.h> LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar ...
- Java开发环境配置(win7-64bit)
Java开发环境配置(win7-64bit) java Java开发环境配置(win7-64bit) Java开发环境配置(win7-64bit) 1.概述 2.文本用到的工具 3.环境变量配置 4. ...