注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

牧笔临风

己有能,勿自私!

 
 
 

日志

 
 
 
 

php CLI与CGI  

2010-08-13 21:07:36|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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 ?>来包含代码。
  评论这张
 
阅读(1049)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017