PHP在CLI中的开发

最近学习一些PHP在CLI中的开发,把自己一些学习心得和大家分享。
PHP CLI模式开发不需要任何WEB服务器(包括Apache或MS IIS等),这样,CLI可以运行在各个场合。有两种方式可以运行PHP CLI脚本。
第一种方法是使用 php -f /path/to/yourfile.php,调用PHP CLI解释器,并给脚本传递参数。这种方法首先要设置php解释器的路径,Windows平台在运行CLI之前,需设置类似 path c:php的命令,也失去了CLI脚本第一行的意义,因此不建议使用该方法。
第二种方法是首先运行 chmod+x<要运行的脚本文件名>(UNIX/Linux环境),将该PHP文件置为可执行权限,然后在CLI脚本头部第一行加入声明(类似于#!/urs/bin/php或PHP CLI解释器位置),接着在命令行直接执行,这是CLI首选方法,建议使用。
下面我们看看怎么编写PHP CLI脚本。


  1. 首先创建一个名为 myfile.php 的PHP脚本,用于运行 PHP CLI 。该脚本很简单,仅仅显示“你好 PHP CLI!”。该脚本代码如下:
    #!/usr/local/bin/php -q
    //Windows 平台上,上行应该为:#!C:phpphp.exe -q
    echo "你好 PHP CLI!";
    ?>
    不要忘了给该文件设置为可执行的权限:
    $ chmod 755 myfile.php
    然后直接输入以下命令,按回车键即可以运行:
    $ ./myfile.php
    如果要在Windows系统下运行该脚本,则不需要设置文件属性,可以直接运行该脚本。
    C: >myfile.php
    你好 PHP CLI!
    如果在Windows平台,CLI脚本的第一行一定要写php.exe 所在的正确位置(另外,如果要在CLI脚本中加注释语句,则要把注释写在PHP标签里面,因为CLI解释只认识第一行,不在PHP标签里认为是语法错误),如下:
    #!C:phpphp.exe -q
    这样,可以看到在命令行下信息已经打印出来,证明该CLI脚本已经成功运行。

  2. 从命令行上读取参数
    如果想从命令行获取参数,CLI 可以从$_SERVER['argc']和$_SERVER['argv']取得参数的个数和值。我们再建立一个文件,名字为testargs.php,脚本代码如下:
    #! C:phpphp.exe -q
    //UNIX和Linux平台下应该为 #! /usr/local/bin/php -q
    echo "测试获取参数:n";
    echo $_SERVER['argc']."n";
    //显示传入的参数值,从索引1开始显示
    echo $_SERVER['argv'][1]."n";
    echo $_SERVER['argv'][2]."n";
    echo $_SERVER['argv'][3]."n";
    echo $_SERVER['argv'][4]."n";
    ?>
    在命令行输入如下代码:
    C:Usersljgtestargs.php Always To Be Best
    测试获取参数:
    4
    Always
    To
    Be
    Best
    因为我们输入了一串单词,为“Always To Be Best”, 脚本参数以空格分隔。因此,PHP将其计为4个参数,下面对此说明。
    $_SERVER['argc']数组返回一个整型的数,代表从命令行上回车后一共输入了几个参数。
    从上面例子的结果可以看出,要访问已经传入的参数值,需要从索引1开始。因为脚本本身的文件已经占用了索引0,即$_SERVER['argv'][0]。

  3. 处理I/O通道
    PHP最初设计不是用来与用户直接的键盘输入或文本输入结合使用。了解这一点至关重要,因为如果需要在命令行中执行任何操作,都必须能够与用户来回通信。
    输入输出(I/O)通道这个思想来源于UNIX系统,UNIX系统提供了3个文件句柄,用以从一个应用程序以及用户终端发送和接收数据。分别是:STDIN、STDOUT、STDERR。这里不对这三个句柄做详细的解释,大家可以参考相关资料。

  4. 后台运行CLI
    如果正在运行一个进程,而且在退出帐户时该进程还不会结束,即在系统后台或背景下运行,那么就可以使用nohup命令。该命令可以在退出帐户之后继续运行相应的进程。
    nohup 在英文中就不挂起的意思。该命令的一般形式为:
    nohup -f scriptnam.php &
    使用nohup命令提交作业,在默认情况下该作业的所有输出都被重定向到一个名为nohup.php 的文件中,除非另外指定了输出文件。
    nohup scriptnam.php > log.txt &
    这样,PHP CLI 脚本执行后的结果将输出到log.txt中,我们可以使用tail命令查看该内容:
    tail -n50 -f log.txt


Need a translation service?

Please enter your personal details and we will contact you shortly

Words translated by CCJK

146,096,379

We are Certified

Our Client Satisfaction

rating for previous quarte

4.00

Over 95% of our clients recommend our language services to others

Copyright © CCJK Technologies Co., Ltd. 2000-2017. All rights reserved.
TOP