在命令行下运行PHP脚本[带参数]的方法

创建一个简单的文本文件,其中包含有以下PHP代码,并把它保存为hello.php:


代码如下:

<?php
echo "Hello from the CLI";
?>

现在,试着在命令行提示符下运行这个程序,方法是调用CLI可执行文件并提供脚本的文件名:
#php phphello.php
输出Hello from the CLI

使用标准的输入和输出
你可以在自己的PHP脚本里使用这三个常量,以接受用户的输入,或者显示处理和计算的结果。要更好地理解这一点,可以看看下面的脚本(

列表A):

列表A


代码如下:

<?php
// ask for input
fwrite(STDOUT, "Enter your name: ");

// get input
$name = trim(fgets(STDIN));

// write input back
fwrite(STDOUT, "Hello, $name!");
?>

Look what happens when you run it:
shell> php hello.php
Enter your name: Joe
Hello, Joe!

在这个脚本里,fwrite()函数首先会向标准的输出设备写一条消息,询问用户的姓名。然后它会把从标准输入设备获得的用户输入信息读

取到一个PHP变量里,并它把合并成为一个字符串。然后就用fwrite()把这个字符串打印输出到标准的输出设备上。

-----------------使用命令行自变量
在命令行里输入程序参数来更改其运行方式是很常见的做法。你也可以对CLI程序这样做。PHP CLI带有两个特殊的变量,专门用来达到这个

目的:一个是$argv变量,它通过命令行把传递给PHP脚本的参数保存为单独的数组元素;另一个是$argc变量,它用来保存$argv数组里元素的

个数。

用PHP脚本编写一段读取$argv并处理它所含参数的代码是很简单的。试试列表B里的示例脚本,看看它是如何工作的:

列表B


代码如下:

<?php
print_r($argv);
?>

Run this script by passing it some arbitrary values, and check the output:

shell> php phptest.php chocolate 276 "killer tie, dude!"
Array
( [0] => test.php
[1] => chocolate
[2] => 276
[3] => killer tie, dude!
)

正如你可以从输出的结果看到的,传递给test.php的值会自动地作为数组元素出现在$argv里。要注意的是,$argvis的第一个自变量总是

脚本自己的名称。

下面是一个更加复杂的例子(列表C):

列表C

代码


代码如下:

<?php
// check for all required arguments
// first argument is always name of script!
if ($argc != 4) {
die("Usage: book.php <check-in-date> <num-nights> <room-type> ");
}

// remove first argument
array_shift($argv);

// get and use remaining arguments
$checkin = $argv[0];
$nights = $argv[1];
$type = $argv[2];
echo "You have requested a $type room for $nights nights, checking in on $checkin. Thank you for your order! ";
?>

下面是其用法的示例:

shell> php phpbook.php 21/05/2005 7 single
You have requested a single room for 7 nights, checking in on 21/05/2005. Thank you for your order!

在这里,脚本首先会检查$argc,以确保自变量的数量符合要求。它然后会从$argv里提取出每一个自变量,把它们打印输出到标准的输出

(0)

相关推荐

  • 如何使用Linux的Crontab定时执行PHP脚本的方法

    下面介绍Crontab的两种方法. 一.在Crontab中使用PHP执行脚本 就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本. 每一小时执行myscript.php如下: 复制代码 代码如下: # crontab -e 00 * * * * /usr/local/bin/php /home/john/myscript.php /usr/local/bin/php为PHP程序的路径. 二.在Crontab中使用URL执行脚本 如果你的P

  • cmd下运行php脚本

    其实蛮简单的 我的php安装目录在 d:\php 那么 运行 cmd >d: >cd php 要让工作目录指向php.exe的安装文件夹 然后就可以用php指令了 比如 在该文件夹下面新建一个test.php <?php echo "test";?> >php test.php 看运行成功了吧.

  • 记录一次排查PHP脚本执行卡住的问题

    发现问题 最近忽然从监控中发现,我们一个服务的一台机器负载比同机房的其他机器要高,而流入流出流量没有差别,进一步查看发现每个机房都有一台机器存在相同的现象,梳理后发现有问题的这些机器相比正常的机器多跑了一些PHP脚本,于是猜测是执行脚本出问题导致. 解决问题 登录机器后执行top命令,果然发现存在一个CPU占用较高的PHP进程,然后执行下列命令,发现存在一个由crontab启动的执行了很长时间的PHP脚本: ps aux | grep 'php' | grep -v 'php-fpm' 由于之前

  • PHP 编写的 25个游戏脚本

    无论是一个人玩简单的使用纸和笔的游戏,还是同一群人玩复杂的桌面角色扮演游戏,或者任意类型的联机游戏,本系列都提供了适合您的内容."用 PHP 可以编写的 30 个游戏脚本" 系列中的每篇文章都将分别用不到 300 词的文字介绍 10 个脚本(3d10 表示 "掷三个 10 面的骰子"),这些介绍性文字甚至对于开发新手来说都十分简单,而且对于经验丰富的游戏玩家来说也十分有用.本系列的目的在于为您提供可以修改的内容来满足自身的需求,以便您可以在下一次游戏交流会上通过展示

  • PHP命令行脚本接收传入参数的三种方式

    通常PHP都做http方式请求了,可以使用GET or POST方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务.这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参. 一.使用$argv or $argc参数接收 复制代码 代码如下: <?php /**  * 使用 $argc $argv 接受参数  */   echo "接收到{$argc}个参数"; print_r($argv); 执行 复制代码 代码如下: [root@DE

  • Nginx和PHP-FPM的启动、重启、停止脚本分享

    服务器上的Nginx和PHP都是源码编译安装的,不像ubuntu一样有自带service启动脚本,所以不支持类似以前的nginx (start|restart|stop|reload)了.自己动手丰衣足食.以下脚本应该在RHEL, Fedora, CentOS下都适用. 一.Nginx启动脚本/etc/init.d/nginx 复制代码 代码如下: #!/bin/bash # # Startup script for Nginx - this script starts and stops th

  • PHP教程之PHP中shell脚本的使用方法分享

    作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支. PHP经过长时间的发展,很多用户都很了解PHP了,这里我发表一下个人理解,和大家讨论讨论.大多数情况下,我使用 exec() 命令和数据数组处理所有东西.或者对更简单的命令使用 shell_exec(),尤其是不关心结果时.如果仅需返回一个 PHP shell脚本,我就使用 passthru().通常,我

  • win7计划任务定时执行PHP脚本设置图解

    做php开发的朋友有时候会希望自己的电脑能每天定时的运行一下某个脚本,但定时执行php脚本这种概念似乎多半是在linux中才提到,下面这篇文章主要和大家分享一下在win7下如何设置计划任务,以实现定时执行我们的php脚本. 1.如下图依次选择 "开始"--->"所有程序"--->"附件"--->"系统工具"--->"务计划程序" 2.在打开的面板中选择"创建任务"

  • Linux下php5.4启动脚本

    废话不多说,直接上步骤 1.修改php-fpm.conf配置文件 修改/usr/local/php/etc/php-fpm.conf(当然这个跟你配置的php路径相关)配置文件 启动pid=run/php-fpm.pid ; Pid file ; Note: the default prefix is /usr/local/php/var ; Default Value: none pid = run/php-fpm.pid 启动error_log=log/php-fpm.log ; Error

  • nginx php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)

    很多站长转到nginx+php-fpm后,饱受500,502问题困扰.当nginx收到如上错误码时,可以确定后端php-fpm解析php出了某种问题,比如,执行错误,执行超时. php-fpm.conf的配置文件中有一个参数request_slowlog_timeout是这样描述的 复制代码 代码如下: ; The timeout for serving a single request after which a PHP backtrace will be; dumped to the 'sl

随机推荐