友声网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
开启左侧

白话php工作方式:mod_php、mod_fastcgi、php-fpm、spawn-fcgi

[复制链接]
admin 发表于 2017-9-22 17:07 | 显示全部楼层 |阅读模式
以apache为例
1、mod_php,就是apache来亲自运行php,把php作为自己的一部份来运行。php导致的内存和cpu占用升高也会使得apache内存cpu占用升高。
2、mod_fastcgi,这是apache的一个模块,apache用它来运行php,这样php就不占用apache的线程了,apache把这个任务交给了mod_fastcgi,而mod_fastcgi也不把php作为自己的一部份来运行,而是让php启动多个php-cgi.exe进程,mod_fastcgi来管理这些进程。
3、php-fpm,其实这个跟mod_fastcgi作用是一样的,只是mod_fastcgi属于apache,而php-fpm属于php,其运行方式与mod_fastcgi类似,apache启动后用php-fpm启动多个php-cgi.exe进程,php-fpm来管理这些进程。
4、因为php-fpm管理效率较高,且可以对接其他服务器如:iis、apache、nginx、lighttpd等等,加之在php5.3.3以后php-fpm成为了php一部份,所以用php-fpm管理php是目前最流行的。

nginx运行php的方式:
1、nginx本身没有类似的mod_php或mod_fastcgi。所以nginx只能通过其他方式,早期的nginx需要用lighttpd的spawn-fcgi来运行控制php,spawn-fcgi类似于mod_fastcgi和php-fpm,早期的spawn-fcgi是lighttpd一部份,nginx使用spawn-fcgi必需同时安装lighttpd,后期的spawn-fcgi独立后可以直接使用。
2、上面提到php-fpm管理管理效率更高,又是php的一部份,所以nginx使用php-fpm运行php成为了最佳选择。

lighttpd运行php的方式:
1、上面我们提到nginx早期运行php需要lighttpd的spawn-fcgi,那么早期的lighttpd运行php也需要spawn-fcgi,但是后来spawn-fcgi被独立出来,那么后来的lighttpd运行php的方式就是mod_fastcgi,所以spawn-fcgi内存溢出已成历史。
2、lighttpd能用php-fpm管理php吗?答案是肯定的,但是需要用到自身的mod_fastcgi与php-fpm对接,也就是说lighttpd只有开启了mod_fastcgi,才可以使用php-fpm。

以上用不专业很的方式大体讲解了服务端运行php的方式。当初开始接触到mod_php、mod_fastcgi、php-fpm、spawn-fcgi也是一头雾水,有时候网上一篇文章被ctrl+c多了就讹传讹了。apache、nginx、lighttpd运行php各有各的最佳方式。如果您只是运行一个如本站这样的博客,apache+mod_php是最省心的选择。如果您运行一个动态+静态+图片站,比如论坛,lighttpd或前端nginx、后端lighttpd是最佳选择。如果您的服务器运行多个站,各种各样的站,Kangle是不错的选择。
 楼主| admin 发表于 2018-1-31 14:04 | 显示全部楼层

RSS|无图版|手机版|友声网 ( 鲁ICP备15020090号-1 )|网站地图 | 点击这里给我发消息 |

GMT+8, 2024-4-19 08:29 , Processed in 0.053975 second(s), 7 queries , MemCache On.

Powered by Discuz! X

© ys166.com

快速回复 返回顶部 返回列表