PHP的Module、CGI和FASTCGI三种工作模式

静态和动态网站

静态网站

全部由HTML(标准通用标记语言的子集)代码格式页面组成的网站。所有的内容包含在网页文件中。网页可以出现各种视觉动态效果,eg:GIF动画、FLASH动画、滚动字幕等,网站主要是静态化的页面和代码组成,一般文件名均以htm、html、shtml等为后缀

动态网页

当客户端请求时执行网页程序脚本,将程序执行结果返回给客户端。eg:PHP、JSP、ASP等,都是比较常见的动态网页程序。

PHP的启动

Zend引擎

1。分析PHP代码将其转换为Zend Opcode格式,并存储在内存中
2。之后执行这些转换后的opcode(opcode:一种PHP脚本编译后的中间语言,加快php的执行速度)

Zend执行php代码的流程

1。扫描 将PHP代码转换为语言片断(Tokens)
2。分析 将Tokens转换成简单而有意义的表达式
3。编译 将表达式编译成opcode
4。执行 顺次执行opcode,每次一条

PHP结合Apache的三种方式

Module

php作为Apache的模块,当php页面请求时,Apache加载php模块,加载资源并执行php程序,将执行结果返回给客户端。

CGI

CGI一个协议,实现Web服务程序和解释器通讯。
PHP作为一个独立的程序,当有PHP页面的请求时,Apache通过CGI方式启动一个PHP进程,PHP进程获取资源并执行后,将执行结果返回给Apache,Apache返回客户端,执行Apache销毁该进程。

FASTCGI

FASTCGI是CGI协议的一个扩展,可以实现将PHP作为一个独立进程,由PHP自身实现进程的创建和销毁。
PHP作为一个独立程序,根据配置文件事前规定默认启动进程数、最大启动进程数、最小启动进程数等,当有PHP页面请求时,Apache通过代理方式使用FastCGI协议请求发送给PHP进程,并指定PHP网页文件所在的位置(URL),PHP进程接收后为其分配一个进程并执行脚本。
FASTCGI好处可以使PHP服务器作为一个独立服务器,通过Socket与HTTPD通信,使服务分离,扩展性增强,并且无需像CGI一样需要Apache来控制PHP的启动,提高Apache的工作效率。


   转载规则


《PHP的Module、CGI和FASTCGI三种工作模式》 Evolyutsiya 采用 知识共享署名 4.0 国际许可协议 进行许可。
 本篇
PHP的Module、CGI和FASTCGI三种工作模式 PHP的Module、CGI和FASTCGI三种工作模式
静态和动态网站静态网站全部由HTML(标准通用标记语言的子集)代码格式页面组成的网站。所有的内容包含在网页文件中。网页可以出现各种视觉动态效果,eg:GIF动画、FLASH动画、滚动字幕等,网站主要是静态化的页面和代码组成,一般文件名均以h
2019-09-22
下一篇 
PHP伪协议 PHP伪协议
php带有的内置URL风格的封装协议,可用于类似fopen()、copy()、file_exits()和filesize() 的文件系统函数。除了这些封装协议,还能通过 stream_wrapper_register() 来注册自定义的封装协议
  目录