静态和动态网站
静态网站
全部由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的工作效率。