20.2.2 CLI的配置参数
下面是有关CLI SAPI运行对php.ini配置进行强制覆盖的参数,以适合运行在Shell环境或命令行环境下。
(1)CLI默认以安静模式开始,不会输出任何HTTP头信息。
(2)在运行时,不会把工作目录改为脚本的当前目录(可以使用-C和-no-chdir参数来兼容CGI模式)。
(3)出错时输出纯文本的错误信息(非HTML格式)。
(4)CLI SAPI强制覆盖了php.ini中一些参数的设置:
&61656; html_errors:CLI默认为False,不显示HTML格式错误;
&61656; implicit_flush:CLI默认为True;
&61656; max_execution_time:CLI默认为0(即没有超时限制);
&61656; register_argc_argv:CLI默认为True,即通过argc传递参数。
关于implicit_flush和register_argc_argv介绍如下:
implicit_flush = On
强制flush(刷新),让PHP告诉输出层在每个输出块之后自动刷新自身数据,等效于在每个print()或echo()调用和每个HTML块后调用flush()函数。
register_argc_argv = On ;
这条命令告诉PHP是否声明argv和argc变量。变量“$argc”提供传递给应用程序的参数数量,数组“$argv”里保存着实际的参数值
&61656;
在PHP CLI下,有3个常量定义在Shell环境下,分别为STDIN、STDOUT和STDERR,包括了在Shell设备下文件处理的所有情况,如STDIN(标准输入):fopen('php://stdin', 'r')。因此,我们可以从STDIN读到一行数据,类似于$strLine = trim(fgets(STDIN));。
注意:STDIN已经定义在PHP CLI下。
&61656;
在PHP 5.x版本后,已经修改了CLI与CGI的文件名,负责解释CGI版本的文件为php-cgi.exe,负责给CLI解释的文件为php.exe。
CLI模式对于开发如抓取网页信息等功能非常有用,可以不需要打开浏览器就运行某个PHP去抓取,也不会存在超时的情况。CLI模式在程序运行完之后,工作台界面会立即关闭,并且占用系统资源要比CGI方式小得多。
除了上述特征外,CLI脚本与Web下的PHP脚本没有什么不同,也需要用<?php ?>来包含代码。
评论