一般php都是用来写web服务器脚本, 不过最近一点小东西不凑巧写成了php, 后来才知道原来不是在web服务器上跑. 还好php就是个万能胶, 而脚本特点又是开发周期短, 于是又改了改, 把这些php代码都变成了CLI调用.
CLI就是纯粹在命令行下用的, 它不会有任何HTTP的head输出. 你敲入命令 php -v 应该就能看出你的php是CLI还是CGI模式的. 另外注意一下使用CLI的时候对应的是哪个php.ini, 可以用 php -i 看到.
把php写成命令行脚本有一些注意事项, 首先像写shell脚本一样, 第一行指定一下解释器位置, 其中 -q 表示安静执行, 可以省略.
Windows下是这样:
#!d:\WebEngine\php-5.2.1-Win32\php.exe -q
Linux下是这样:
#!/usr/local/bin/php -q
然后开始写代码, 接受参数使用数组 $_SERVER["argv"], 数组第一个元素是该脚本文件名. 该数组等价于变量 $argv.
php脚本同样支持标准输入输出和错误输出, 分别对应三个常量 STDIN, STDOUT 和 STDERR. 这三个常量是被包装过的, 其实分别对于三个文件句柄 php://stdin, php://stdout 和 php://stderr. 比如从标准输入读入一段字符, 然后打印出来:
if(!defined("STDIN")) { define("STDIN", fopen("php://stdin", "r")); } $strname = fread(STDIN, 100); if(!defined("STDIN")) { define("STDOUT", fopen("php://stdout", "w")); } fwrite(STDOUT, $strname); |
php脚本也支持管道.
如果要避免任何错误和警告输出, 可以在脚本开始处设置 error_reporting(0).
更多的内容还可以参考php manual.