PHP面试记录:apache和nginx的区别

【本文章是给自己看的,主要记录下面试问题】

问,apache和nginx有啥区别吗?你选哪个?

apache是一个连接一个进程,没个请求都会建一个进程

nginx一个进程可以处理多个请求,nginx开发的时候就奔着高并发去的。

apache解析php有三种方式:

module模式----把apache接收到的请求交给php模块处理,php模块在apache里面,如果php模块卡死,服务器跟着卡死

CGI模式,apache把请求给CGI程序--这里指php,CGI处理完后返回给apache输出,每次请求的时候才启动CGI,用完就释放了

fast CGI,就是把CGI进程扔到内存里,可以启动多个CGI解释器进程,被动等待apache的请求,常驻内存对内存开销要求较大,fastCGI能独立运行,但是对很多工作来说没必要关心这个,谁会请求另一台服务器上的php进程处理问题……

 

apache处理动态内容比较好,当然这是网上各种文章的普遍认识,但实际上apache本身的设计而言,他核心代码量并不大,他的设计是模块化设计,按需加载,处理php其实就是交给php去处理的,apache本身只是转发了请求,也就是说动态处理能力实际上和php有关。早期php性能还比较低的时候,apache处理动态内容受到php模块影响,想高也高不起来,同时,php的性能又受到数据库的性能影响,I/O性能最终会反馈到apache上,也就是说,apache所谓的动态处理能力强的优势,在现在普遍使用ssd硬盘,高性能内存的服务器,在php7全面更新核心代码后,很难体现出来,多用于win平台的开发的时候的本地服务器。

 

apache重写规则rewrite更完善,也更加好用,当然了,对普通网站来说,根本没必要重写那么多的东西,这个功能对于php而言有些鸡肋。

 

nginx主要是是应对高并发,他读取静态页面更好,大部分的php网站到最后都会做静态化,所以nginx就成了首选。

nginx可以做反向代理,这点对于请求数量很多的网站很有用。毕竟负载均衡能解决很多问题。

nginx占用资源少,高并发下也不会占用太多资源。因为nginx是异步非阻塞,apache是阻塞模型。

nginx是俄罗斯的一个大佬开发的(伊戈尔·赛索耶夫),确实没有apache稳定,毕竟apache是sun公司维护的。

nginx号称保持10000个没有活动的连接,而这些连接只占用2.5MB内存,因此普通的ddos攻击无效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值