2008年11月9日 星期日

PHP/CGI/FastCGI/SCGI/WSGI

PHP

超文本预处理器, Hypertext Preprocessor, 是一种被广泛应用的开放源代码的多用途脚本语言, 它可嵌入到 HTML中, 尤其适合 WEB 开发.

和客户端的 JavaScript 不同的是,PHP 代码是运行在服务端的。如果您在您的服务器上建立了如上例类似的代码,则在运行该脚本后,客户端就能接收到其结果,但他们无法得知其背后的代码是如何运作的。您甚至可以将 WEB 服务器设置成让 PHP 来处理所有的 HTML 文件,这么一来,用户就无法得知服务端到底做了什么。这是和客户端脚本的本质区别

PHP 主要是用于服务端的脚本程序,因此您可以用 PHP 来完成任何其它的 CGI 程序能够完成的工作,例如收集表单数据,生成动态网页,或者发送/接收 Cookies。

服务端脚本。这是 PHP 最传统,也是最主要的目标领域。开展这项工作您需要具备以下三点:PHP 解析器(CGI 或者服务器模块)、WEB 服务器和 WEB 浏览器。您需要在运行 WEB 服务器时,安装并配置 PHP,然后,可以用 WEB 浏览器来访问 PHP 程序的输出,即浏览服务端的 PHP 页面。请查阅“安装”一章以获取更多信息。

命令行脚本。您可以编写一段 PHP 脚本,并且不需要任何服务器或者浏览器来运行它。通过这种方式,您仅仅只需要 PHP 解析器来执行。这种用法对于依赖 cron(Unix 或者 Linux 环境)或者 Task Scheduler(Windows 环境)的日常运行的脚本来说是理想的选择。这些脚本也可以用来处理简单的文本。请参阅“PHP 的命令行模式”以获取更多信息。

编写客户端的 GUI 应用程序。对于基于窗口式的应用程序来说,PHP 或许不是一种最好的语言,但是如果您非常精通 PHP,并且希望在您的客户端应用程序中使用 PHP 的一些高级特性,您可以利用 PHP-GTK 来编写这些程序。用这种方法,您还可以编写跨平台的应用程序。PHP-GTK 是 PHP 的一个扩展,在通常发布的 PHP 包中并不包含它。如果您对 PHP-GTK 感兴趣,请访问其网站以获取更多信息。


CGI

CGI(common Gateway Interface,公共网关接口).是Web服务器与外部程序之间通信方式的标准.
CGI(Common Gateway Interface)是HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
CGI处理步骤:
⑴通过Internet把用户请求送到服务器。
⑵服务器接收用户请求并交给CGI程序处理。
⑶CGI程序把处理结果传送给服务器。
⑷服务器把结果送回到用户。

这个上面很详细:http://zhidao.baidu.com/question/4071689.html

其中最清晰的一句: CGI(common gate intergace),通用网关接口,它是一段程序,运行在服务器上,提供同客户端HTML页面的接口,通俗的讲CGI就像是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器,再把服务器执行的结果返还给HTML页;


FastCGI
简单来说,FastCGI是CGI的扩展.另一种Web服务器接口实现


SCGI
The Simple Common Gateway Interface (SCGI) is a protocol for
applications to interface with HTTP servers, an alternative to the CGI
protocol. It is similar to FastCGI but is designed to be easier to
implement.是Http服务器和Web应用的通用接口协议, 用于替代CGI协议. 它类似于FastCGI, 但它更容易实施.
包含:
  • An Apache module named mod_scgi that implements the client side of the protocol.
  • A Python package named scgi that implements the server side of the protocol.
  • A CGI script named cgi2scgi that implements a CGI to SCGI protocol adaptor.

WSGI

The Web Server Gateway Interface defines a simple and universal interface between web servers and web applications or frameworks for the Python programming language.WSGI是Python应用程序或框架和Web服务器之间的一种接口,没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何实现(Server)上运行, 反之亦然
三层 Web应用 --> 中间件 --> Web服务器




Web server interfaces
General:
Common Gateway Interface (CGI) Simple CGI FastCGI
Technology specific: ISAPI Java Servlet NSAPI AJP Python WSGI
Apache modules: mod_perl mod_php mod_python (mod_wsgi) mod_ruby mod_jk
Other: ASP ASP.NET ColdFusion

总之一句话,,,Web应用如何与Web服务器间的一个接口的各种实现....也是一整套协议标准.

0 comments:

I just don't feel like doing this today, but I will do it anyway!