SAPI:CLI CGI 的配置参数

SAPI:CLI CGI 的配置参数

PHP supports a new SAPI type (Server Application Programming Interface) named CLI which means Command Line Interface. As the name implies, this SAPI type main focus is on developing shell (or desktop as well) applications with PHP.

There are quite a few differences between the CLI SAPI and other SAPIs which are explained in this chapter. It's worth mentioning that CLI and CGI are different SAPI's although they do share many of the same behaviors.

参考:http://www.softpanorama.org/Scripting/Phprama/command_line_php.shtml


CLI 与CGI的区别

PHP CLI版本有些类似于PHP的CGI模式,尽管它们之间有很多共同的行为,但CLI和CGI是分属于不同的SAPI的。

CLI没有用到GET或POST表单处理,无MIME的头信息输出,以及其他隐含的SAPI实现。
CLI的配置参数

下面是有关CLI SAPI运行对php.ini配置进行强制覆盖的参数,以适合运行在Shell环境或命令行环境下。

(1)CLI默认以安静模式开始,不会输出任何HTTP头信息。

(2)在运行时,不会把工作目录改为脚本的当前目录(可以使用-C和-no-chdir参数来兼容CGI模式)。

(3)出错时输出纯文本的错误信息(非HTML格式)。

(4)CLI SAPI强制覆盖了php.ini中一些参数的设置:
? html_errors:CLI默认为False,不显示HTML格式错误;
? implicit_flush:CLI默认为True;
? max_execution_time:CLI默认为0(即没有超时限制);
? 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”里保存着实际的参数值

在PHP CLI下,有3个常量定义在Shell环境下,分别为STDIN、STDOUT和STDERR,包括了在Shell设备下文件处理的所有情况,如STDIN(标准输入):fopen('php://stdin', 'r')。因此,我们可以从STDIN读到一行数据,类似于$strLine = trim(fgets(STDIN));。

注意:STDIN已经定义在PHP CLI下。

在PHP 5.x版本后,已经修改了CLI与CGI的文件名,负责解释CGI版本的文件为php-cgi.exe,负责给CLI解释的文件为php.exe。

CLI模式对于开发如抓取网页信息等功能非常有用,可以不需要打开浏览器就运行某个PHP去抓取,也不会存在超时的情况。CLI模式在程序运行完之后,工作台界面会立即关闭,并且占用系统资源要比CGI方式小得多。

除了上述特征外,CLI脚本与Web下的PHP脚本没有什么不同,也需要用<?php ?>来包含代码。

/////////////

PHP 5 中对 CLI 和 CGI 文件名作了些改变。PHP 5 中,CGI 版本被改名为 php-cgi.exe(以前是 php.exe),现在主目录中的是 CLI 版本(之前是 cli/php.exe)。

PHP 5 中引进了一种新模式:php-win.exe。这和 CLI 版本相同,只除了 php-win 不输出任何内容,因此不会提供控制台(屏幕上不会闪过“dos 窗口”)。此行为类似 php-gtk。

PHP 5 中,CLI 版本总会产生全局变量 $argv 和 $argc 而不管 php.ini 是怎么设的。即使将 register_argc_argv 设为 off 也不影响 CLI。

你可能感兴趣的:(PHP,sapi)