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中的运行方式
基础教程推荐
- Centos 安装Django2.1 2023-09-24
- windows环境下apache-apollo服务器搭建 2023-09-10
- 为Win2003服务器打造铜墙铁壁的方法步骤 2022-09-01
- Apache CarbonData 1.0.0发布及其新特性介绍 2023-09-11
- Docker容器操作方法详解 2022-11-13
- P3 利用Vulnhub复现漏洞 - Apache SSI 远程命令执行漏洞 2023-09-10
- Centos7 nginx的安装以及开机自启动的设置 2023-09-22
- RFO SIG之openEuler AWS AMI 制作详解 2022-12-28
- Apache Kafka 2.5 稳定版发布,新特性抢先看 2023-09-11
- 通过StatefulSet部署有状态服务应用实现方式 2022-10-01
