• php命令行模式


    CLI SAPI 模块有以下三种不同的方法来获取要运行的 PHP 代码:

    1. 让 PHP 运行指定文件。 

      php my_script.php
      
      php -f my_script.php
      

      以上两种方法(使用或不使用 -f 参数)都能够运行给定的 my_script.php 文件。可以选择任何文件来运行,指定的 PHP 脚本并非必须要以 .php 为扩展名,它们可以有任意的文件名和扩展名。

    2. 在命令行直接运行 PHP 代码。

      php -r 'print_r(get_defined_constants());'

      在使用这种方法时,请注意外壳变量的替代及引号的使用。

      Note:

      请仔细阅读以上范例,在运行代码时没有开始和结束的标记符!加上 -r 参数后,这些标记符是不需要的,加上它们会导致语法错误。

    3. 通过标准输入(stdin)提供需要运行的 PHP 代码。

      以上用法提供了非常强大的功能,使得可以如下范例所示,动态地生成 PHP 代码并通过命令行运行这些代码:

      $ some_application | some_filter | php | sort -u >final_output.txt
      

    以上三种运行代码的方法不能同时使用。

    和所有的外壳应用程序一样,PHP 的二进制文件(php.exe 文件)及其运行的 PHP 脚本能够接受一系列的参数。PHP 没有限制传送给脚本程序的参数的个数(外壳程序对命令行的字符数有限制,但通常都不会超过该限制)。传递给脚本的参数可在全局变量 $argv 中获取。该数组中下标为零的成员为脚本的名称(当 PHP 代码来自标准输入获直接用 -r 参数以命令行方式运行时,该名称为“-”)。另外,全局变量 $argc 存有 $argv 数组中成员变量的个数(而非传送给脚本程序的参数的个数)。

    只要传送给脚本的参数不是以 - 符号开头,就无需过多的注意什么。向脚本传送以 - 开头的参数会导致错误,因为 PHP 会认为应该由它自身来处理这些参数。可以用参数列表分隔符 -- 来解决这个问题。在 PHP 解析完参数后,该符号后所有的参数将会被原样传送给脚本程序。

     

    # 以下命令将不会运行 PHP 代码,而只显示 PHP 命令行模式的使用说明:
    $ php -r 'var_dump($argv);' -h
    Usage: php [options] [-f] <file> [args...]
    [...]
    
     
    测试例子如下:
    E:APMservAPMServ5.2.6PHP>php E:APMservAPMServ5.2.6wwwhtdocsphpWeiXinCPUShellsCPUThreadWxUserFetcher.shell.php 124.248.33.43 weixin_ent_suishi_2013 >E:/projects/log.txt
     只有文件中有输出打印才会把调试内容输出到 E:/projects/log.txt文件中,否则此文件为空
     
    接收参数:
          $dbHost = $_SERVER ["argv"] [1];//ent db host
          $dbName = $_SERVER ["argv"] [2];//ent db name
          或传递给脚本的参数可在全局变量 $argv 中获取
  • 相关阅读:
    22. Generate Parentheses
    21. Merge Two Sorted Lists
    20. Valid Parentheses
    19. Remove Nth Node From End of List
    18. 4Sum
    JDK7新特性
    类Enum
    装饰设计模式
    模板设计模式
    反射
  • 原文地址:https://www.cnblogs.com/andydao/p/3208134.html
Copyright © 2020-2023  润新知