apache和nginx处理数据比较之php动态:

回复 收藏
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 落雨寒 愿与各位共同进步,泡妞!!!
2015-08-09 17:27 举报
已邀请:
0

sinni029

赞同来自:

谢谢分享

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: