php在apache下一般有三种工作方式:CGI,Apache模块,FastCGI在CGI模式下,如果用户请求一个php文件,web服务器就会调用php解析器去解析这个文件,然后把结果返回给客户端。在apache模块模式下,将php解析器作为了ap...

php在apache下一般有三种工作方式:CGI,Apache模块,FastCGI
在CGI模式下,如果用户请求一个php文件,web服务器就会调用php解析器去解析这个文件,然后把结果返回给客户端。
在apache模块模式下,将php解析器作为了apache的一个模块,这样php解析器就与web服务器一起运行。
在fastcgi模式下,web服务器不会像cgi那样每次都启动一个新的进程,而是将内容传递到一个已有的进 程中(这个进程在web服务器启动时就开启了,而且不会退出),这个进程就会一次次的处理来自客户端的请求。
1. CGI模式与模块模式比较:
这两种工作方式的区别:
在CGI模式下,如果客户机请求一个php文件,Web服务器就调用php解析器去解释这个文件,然后再把解释的结果以网页的形式返回给客户机;而在模块化(DLL)中,PHP是与Web服务器一起启动并运行的。
所以从某种角度上来说,以apache模块方式安装的PHP有着比CGI模式更好的安全性以及更好的执行效率和速度。
2. FastCGI运行模式分析:
FastCGI的工作原理是:
(1)、apache启动时载入FastCGI进程管理器【PHP的FastCGI进程管理器是PHP-FPM(php-FastCGI Process Manager)】。
(2)、FastCGI进程管理器自身初始化,启动多个CGI解释器进程并等待来自Web Server的连接。
(3)、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
(4)、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在 WebServer中)的下一个连接。 在正常的CGI模式中,php-cgi在此便退出了。
在上述情况中,你可以想象 CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部dll扩展并重初始化全部数据结构。使用FastCGI,所有这些 都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。
参考资料:
http://fifiole.blog.163.com/blog/static/169459225201222962651804/
http://blog.csdn.net/ajaxuser/article/details/5892630
原文:http://wangyongbin.blog.51cto.com/8964308/1659058
本文标题为:http服务(五)——php在apache中的运行方式


基础教程推荐
- Apache Hudi数据布局黑科技降低一半查询时间 2022-10-06
- Apache服务器配置攻略3 2022-09-01
- 实战Nginx_取代Apache的高性能Web服务器 2023-09-29
- apache和nginx结合使用 2023-09-10
- IIS 6 的 PHP 最佳配置方法 2022-09-01
- linux之conda环境安装全过程 2023-07-11
- 服务器添加git钩子的步骤 2022-12-12
- centos 7 安装及配置zabbix agent 2023-09-24
- nginx.conf(centos7 1.14)主配置文件修改 2023-09-23
- linux下安装apache与php;Apache+PHP+MySQL配置攻略 2023-08-07