- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章mod_php、FastCGI、PHP-FPM等PHP运行方式对比由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
概述 。
写这篇文章的是因为今天要Ubuntu下搭建LNMP环境,Nginx使用的是PHP-FPM,所以对Web服务器与PHP解释器的交互方式做了个整理.
众所周知,PHP是跨平台、跨服务器的语言,这也是它如此流行的原因之一。但是,很少有人知道PHP解释器可以以不同的方式运行在Web服务器中。PHP最常用的方式是以模块的方式(mod_php)运行在Apache中,也是Apache运行PHP的默认方式。但是在Nginx中,Nginx又使用的是PHP-FPM.
这篇文章就对这些概念做个介绍,如有不对的地方,请多多批评指教.
什么是PHP处理器(PHP handlers)?
首先需要记住的是,任何一种Web服务器(Apache、Nginx等)都是被设计成向用户发送html、图片等静态资源的,Web服务器自身并不能解释任何动态脚本(PHP、Python等)。PHP处理器就是用来解释Web应用中的PHP代码,并将它解释为HTML或其他静态资源,然后将解析的结果传给Web服务器,最后再由Web服务器发送给用户。大多数的Web服务器都不能解析PHP代码,因此它需要一个能解析PHP代码的程序,这就是PHP处理器.
mod_php 。
首先,来看一下以Apache模块方式运行PHP。mod_php现在在Linux各版本的软件仓库里都有,因此很容易被安装.
当PHP以模块的方式运行在Apache中时,PHP解释器被“内嵌”在Apache的进程里。Apache不会调用任何外部的PHP进程,因此这种方式使Apache与PHP能更好的通信。但是,当以这种方式运行PHP的时候,哪怕Apache提供的仅仅是静态的资源(如HTML),Apache的每个子进程也都会载入 mod_php,导致了比正常情况下更多的内存开销.
以这种方式运行的另一个缺点是,它仅能与Apache一起配合工作。另外,在小型的VPS和大型的网站中,这种方式也不合适,因为大型网站可能有很多静态资源,而这些静态资源是不需要PHP程序解释的.
优点: 1.易于安装和更新 2.容配置 缺点: 1.仅能与Apache一起工作 2.增加了Apache子进程内存开销 3.当更改php.ini文件后,需要重启Apache 。
FastCGI 。
FastCGI是交互程序与Web服务器通用的协议接口,是早期CGI(Common Gateway Interface)的一个变种。相对于CGI来说,FastCGI减少了和Web服务器交互的开销,同时一次可以处理更多的请求.
Apache可以以mod_fcgid的形式使用FastCGI。其他Web服务器,如lighttpd, nginx, Cherokee,甚至微软的IIS也都能使用FastCGI。使用FastCGI,可以同时设置多个版本的PHP,这在某些情况下非常有用.
FastCGI还利用suexec来支持不同的用户用自己的PHP的实例。这个特性对于在共享环境下提高安全性尤其重要。FastCGI在保证性能的同时,也减少了Web服务器的内存开销.
优点: 1.兼容多数Web服务器 2.比mod_php占内存小 3.更多的配置项,包括多版本PHP和suexec 缺点 1.配置复杂 2.不被大家所熟知 。
PHP-FPM(FastCGI Process Manager) 。
PHP-FPM是Web服务器使用PHP的一种最新方式,也是PHP FastCGI的另外一种实现。PHP-FPM对于运行在小型VPS和多服务器上的Web应用非常应用。同时,它也可以被兼容FastCGI的任何Web服务器所使用.
PHP-FPM使管理员能够优雅地停止和启动PHP工作进程而不丢失任何查询。这允许我们逐步更新配置和二进制,而不会损失任何查询。它还允许我们在发生任何意外破坏的情况下,紧急重启进程.
优点: 1.兼容多数Web服务器 2.比mod_php占内存小 3.更多的配置项,包括多版本PHP和suexec 缺点 1.配置复杂 2.不被大家所熟知 。
补充:Apache运行PHP的四种方式 。
mod_php (DSO,Dynamic Shared Object) CGI suPHP FastCGI 。
总结 。
内容相对抽象,理解的不深,记录下留作以后参考~:) 。
最后此篇关于mod_php、FastCGI、PHP-FPM等PHP运行方式对比的文章就讲到这里了,如果你想了解更多关于mod_php、FastCGI、PHP-FPM等PHP运行方式对比的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
在通过 Zend tutorial 时,我遇到了以下语句: Note that the php_flag settings in .htaccess only work if y
为什么 mod_python 是 oop 而 mod_php 不是? 例子:我们去 www.example.com/dir1/dir2 如果你使用 mod_python,apache 打开 www/d
概述 写这篇文章的是因为今天要Ubuntu下搭建LNMP环境,Nginx使用的是PHP-FPM,所以对Web服务器与PHP解释器的交互方式做了个整理。 众所周知,PHP是跨平台、跨服务器的语言,
我正在尝试在 Ubuntu 上启用 mod_php。我越来越 /etc$ sudo a2enmod mod_php ERROR: Module mod_php does not exist! 但我相信
一些 Apache 模块与编程语言相关,例如 mod_php 和 mod_python。描述基本上是“允许在 apache 中使用 php”或“允许在 apache 中使用 python”。我试图了解
HTTP/1.1 RFC 规定“HEAD 方法与 GET 相同,除了服务器不得在响应中返回消息体。”我知道 Apache 遵守 RFC 但模块不必遵守。我的问题是,mod_php5 是否尊重这一点?
mod_php 和 cgi php 脚本有什么区别? 我的意思是,为什么使用 mod_php 而不是简单的 php 脚本,将它们作为 CGI 运行会更好(是吗?)? 谢谢 最佳答案 当使用 CGI 时
我想知道是否有人找到了一种方法来检测 PHP 脚本/程序是否通过 Facebook 的 HipHop 或“常规”环境(CLI、mod_php、CGI)运行。 目前我使用的解决方法是寻找一个未实现的功能
我一直在尝试了解将 php 作为 apache 模块与其他模块相比的确切含义/目的。 当 php 作为 apache 模块安装时,究竟会发生什么?比如每次php请求来还是单独加载php模块时都会读取p
我一直在尝试了解将 php 作为 apache 模块与其他模块相比的确切含义/目的。 当 php 作为 apache 模块安装时,究竟会发生什么?比如每次php请求来还是单独加载php模块时都会读取p
我是网络应用程序中的傻瓜。我对 apache 网络服务器的功能有疑问。我的问题主要集中在“apache 如何处理每个传入的请求” 问:当apache在mod_python中运行时/mod_php模式,
因此,我需要在一台服务器上运行多个 php 应用程序/站点。一个或多个应该使用 apache 和 mod_php5 运行,一个或多个应该能够使用 mod_fastcgi 和 php-fpm 运行。 m
我正在寻找一种方法来使用 API 来操纵运行 PHP 的网络服务器。 例如,我希望能够动态添加 mod 重写规则或阻止某些路径的 IP 地址,所有这些都无需触及 .htaccess 文件。 做类似 t
我正在寻找一种方法来使用 API 来操纵运行 PHP 的网络服务器。 例如,我希望能够动态添加 mod 重写规则或阻止某些路径的 IP 地址,所有这些都无需触及 .htaccess 文件。 做类似 t
我正在使用以下命令从源代码构建 php 5.5: sudo ./configure --enable-mbstring --enable-intl --with-gd --with-mysql --w
我正在尝试从 PHP 中在 Windows 7 上使用符号链接(symbolic link)。我正在使用普通用户帐户(非管理员)使用 Apache 2.4.10 和 PHP 5.5.15 运行 XAM
我为文件夹(比如 website)设置了一个 Apache vhost,它是另一个链接到当前版本文件夹(比如 website_N)的符号链接(symbolic link)其中 N 是版本号 (webs
编辑 在 VirtualBox 上运行我的操作系统是个问题。当我将我的操作系统设为磁盘上的本地操作系统后,我就能看到性能提升。 原创 我读到很多人建议放弃 Apache+mod_php,转而使用 HA
我使用共享主机。 有可能找出 PHP 是通过 fastCGI(或可能是 CGI)运行还是作为 Apache 模块 mod_php 运行? 有没有可能不问主办方,自己去查? 最佳答案 这是 phpinf
我对在不同配置(如 mod_php、cgi、FastCGI 等)中运行 PHP 有基本的想法。 在我的发现和测试中,我发现 FastCGI 稍微好一些。我最喜欢 FastCGI 对 SuEXEC 的支
我是一名优秀的程序员,十分优秀!