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

以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-fpmph属于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。

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是最佳选择。如果您的服务器运行多个站,各种各样的站,nginx+iis是不错的选择。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright 2019 友声网  Powered By Z-Blog Theme By 优美尚品

鲁ICP备15020090号