php cli cgi 区别,关于PHP CGI和CLI的几点学习

首先关于几个概念词的总结:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

CGI:“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。在服务器环境中,为“程序”提供标准的接口,通过这个接口,“程序”可以对服务器与客户端交换的信息做一些事情。“程序”的语言并没有要求。程序对接口进行操作。服务器要支持CGI就要提供CGI中要求的环境变量,或者还有别的。我的理解至此为之。

CLI:“命令行界面”(Command Line Interface),可在用户提示符下键入可执行指令的界面。

SAPI:“服务器应用程序接口”(Server Application Programme Interface),可以认为是服务器端的API。貌似和CGI是一个东西,每个服务器提供的API可能不同,但是他们都提供了CGI。所以可以理解CGI是每个服务器都应该有的SAPI。apache有自己的SAPI,IIS也有自己的。但是php能这些不同的服务器端工作,因为php支持了它们各自的SAPI。(CGI和CLI都是SAPI的类型)

ISAPI:ISAPI服务器扩展是可以被 HTTP服务器加载和调用的 DLL。Internet服务器扩展也称为 Internet服务器应用程序(ISA),用于增强符合 Internet服务器API (ISAPI) 的服务器的功能。ISA 通过浏览器应用程序调用,并且将相似的功能提供给通用网关接口 (CGI) 应用程序。

*(ISAPI的DLL应用程序和WEB服务器处于同一个进程中,效率要显著高于CGI)

*phpCGI和phpSAPI为php在Web服务器上运行的php环境;phpCLI为php在命令行运行的接口

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

php的CLI 和 CGI

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。

以CGI方式运行PHP

Options FollowSymLinks

AllowOverride None

Order deny,allow

Allow from all

#    Deny from all

#不能有deny from all

Satisfy all

AddType application/x-httpd-php.php

ScriptAlias /php5/ "D:/php5/"

#必须有结尾的“/”

Action application/x-httpd-php"/php5/php-cgi.exe"

#必须为php-cgi.exe

#

Apache里PHP以模块方式运行和CGI方式运行的区别:

在CGI方式运行时占用的资源较多,在ISAPI模式下的资源相对就较少点,也比较稳定.

以模式方式运行需要的配置:

LoadModulephp5_module        modules/libphp5.so

//添加php解析的扩展

AddType application/x-httpd-php.php

//添加.Z解析的扩展

AddType application/x-compress .Z

//添加压缩文件解析的扩展

AddType application/x-gzip.gz .tgz

以CLI方式运行PHP

1*直接在终端执行php

sjolzy@localhost#php-r 'print_r(get_defined_constants());'

2*运行php-cli脚本文件

sjolzy@localhost#phpmy_script.php

sjolzy@localhost#php-f my_script.php

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

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

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

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

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

用Cron执行php-cli脚本

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业,周期性作业,比如备份数据,Preminder定期查询PR等等,添加的方法:打开/etc/crontab,添加:

0 13 * * * /usr/bin/php-f /home/phpscripts/phpcli.php

--EOF--

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值