apache:
是在php编译的时候有这么一段模块:--with-apxs2=/usr/local/apache/bin/apxs直接编译到apache的配置文件中去,动
态加载mod_php5.so模块(模块都在apache目录里面)来处理apache传递过来的php数据请求并处理,是随apache一起启动
的。(可以在安装php后删除php的目录也不会影响apache)
nginx:
接受到一个php的web请求后,我们常使用的是常驻性cgi,也就是fastcgi,铭哥说用转发来形容很白话,nginx.conf配置
文件中可以直接看到,你懂的,它转发到两个地址中的任何一个:一个是tcp通信:ip:9000(ip可以设置本地或者远程
;就可以做php-fpm分离server)另一个是socket通信文件(unix特有的一种通信方式,铭哥说这个以后会很NB,当然只
能本地使用),把php的请求转发到php-fpm主进程:
php-fpm会根据php-fpm.conf中pool设置的listen地址匹配到相应的tcp9000还是socket文件来分配php-fastcgi子进
程去解释php的动态请求,然后传送给webserver,当该fastcgi子进程传送完解析的数据后,会告诉主进程php-fpm处理完
成,然后等待下一个web请求。
然后我们可以切换一个角度看php-fpm,我喜欢叫它php解释器,我们是在解释器中定义好的global和pool,其中pool
可以为不同的站点设置不同pool,可以为站点增强很多的安全性和稳定性;在pool我们提前预设置好要处理php解释前的
预备工作,比如怎么分配子进程,子进程的运行账户,当然动态和静态我就不解释了,这样当listen到请求后就可以很快
的处理,同时还有一些数据的连接都会有缓存其中,为下次提速,(listen.owner和listen.group要和nginx的运行账户
一致,否则拖拖的502),这样可以让nginx网站在处理速度上很快,前端一心一意的处理静态页面等,动态全部转走交由
php-fpm去分配,然后php-fpm会把数据和静态页面一起传回客户:与此同时,处理完数据后的php-fastcgi子进程如果在
设置的时间内没有接到要解释的请求,就会自动关闭该子进程(动态)释放内存资源,一个worker大概10-20M左右,不啰
嗦了,大概就这些。下面附上我这几天查资料的一些链接,我觉的还不错的。
nginx并发连接数查看:http://renxiangzyq.iteye.com/blog/675349
php的5种运行方式:http://www.cnblogs.com/xia520pi/p/3914964.html
apache的工作模式:http://lxycneo.blog.51cto.com/2534579/671527
nginx的工作模式:http://blog.csdn.net/xxb2008/article/details/42238557
本人Q:945479668 落雨寒 愿与各位共同进步,泡妞!!!
是在php编译的时候有这么一段模块:--with-apxs2=/usr/local/apache/bin/apxs直接编译到apache的配置文件中去,动
态加载mod_php5.so模块(模块都在apache目录里面)来处理apache传递过来的php数据请求并处理,是随apache一起启动
的。(可以在安装php后删除php的目录也不会影响apache)
nginx:
接受到一个php的web请求后,我们常使用的是常驻性cgi,也就是fastcgi,铭哥说用转发来形容很白话,nginx.conf配置
文件中可以直接看到,你懂的,它转发到两个地址中的任何一个:一个是tcp通信:ip:9000(ip可以设置本地或者远程
;就可以做php-fpm分离server)另一个是socket通信文件(unix特有的一种通信方式,铭哥说这个以后会很NB,当然只
能本地使用),把php的请求转发到php-fpm主进程:
php-fpm会根据php-fpm.conf中pool设置的listen地址匹配到相应的tcp9000还是socket文件来分配php-fastcgi子进
程去解释php的动态请求,然后传送给webserver,当该fastcgi子进程传送完解析的数据后,会告诉主进程php-fpm处理完
成,然后等待下一个web请求。
然后我们可以切换一个角度看php-fpm,我喜欢叫它php解释器,我们是在解释器中定义好的global和pool,其中pool
可以为不同的站点设置不同pool,可以为站点增强很多的安全性和稳定性;在pool我们提前预设置好要处理php解释前的
预备工作,比如怎么分配子进程,子进程的运行账户,当然动态和静态我就不解释了,这样当listen到请求后就可以很快
的处理,同时还有一些数据的连接都会有缓存其中,为下次提速,(listen.owner和listen.group要和nginx的运行账户
一致,否则拖拖的502),这样可以让nginx网站在处理速度上很快,前端一心一意的处理静态页面等,动态全部转走交由
php-fpm去分配,然后php-fpm会把数据和静态页面一起传回客户:与此同时,处理完数据后的php-fastcgi子进程如果在
设置的时间内没有接到要解释的请求,就会自动关闭该子进程(动态)释放内存资源,一个worker大概10-20M左右,不啰
嗦了,大概就这些。下面附上我这几天查资料的一些链接,我觉的还不错的。
nginx并发连接数查看:http://renxiangzyq.iteye.com/blog/675349
php的5种运行方式:http://www.cnblogs.com/xia520pi/p/3914964.html
apache的工作模式:http://lxycneo.blog.51cto.com/2534579/671527
nginx的工作模式:http://blog.csdn.net/xxb2008/article/details/42238557
本人Q:945479668 落雨寒 愿与各位共同进步,泡妞!!!
编辑回复