问个有关问题哟 不知道如何标题应该如何取
程序员文章站
2022-05-21 17:42:26
...
问个问题哟 不知道怎么标题应该怎么取
就当时标题党吧
服务器上有一个php 文件 比如是1.php
当别人请求这个文件的时候
这个文件就会被执行 然后返回给客户端执行后的东西
我的问题是
当a客户访问的时候1.php的时候 这是服务器还没有执行完,
突然后b客户也来访问了 这是1.php是等返回了a的请求在执行b的请求了,还是可以同时执行b的请求
------解决方案--------------------
同时执行b的请求
------解决方案--------------------
其实这涉及到网络模型的问题了。
你知道为什么现在都推崇nginx来取代apache,为什么nginx处理并发问题比apache要强很多吗?
因为apache采用的是linux旧版本内核的select模型,而nginx采用的是2.6+版本的epool模型。
回到具体你说的这个问题上,如果b客户来访问时,服务器等待a客户的处理结果再接受b的请求,这就是select模型的工作方式。从接收到请求后之后,同一个进程会一直follow这整个握手过程,知道response结束。这种模型也很容易遭到ddos攻击。
而epool模型,是异步的。服务器接收到一个请求后,由一个主进程负责把任务合理分工开,有个负责分发任务的线程只负责分发任务,剩余的事情委托给其他线程去处理,其他线程处理完毕后,会callback一下主进程可以response了,然后返回给相应客户端。这样的工作方式,每个请求都不会相互阻塞。
不过这样解释后,你可能会不明白,难道说apache就没法处理并发任务了?一个请求阻塞了,其他的请求都进不来了?当然不是,apache worker模式下会开n个进程,所谓的阻塞,也只会阻塞住一个进程。但select模型的这种工作方式确实效率很低。
这部分知识,你可以去参考libevent
就当时标题党吧
服务器上有一个php 文件 比如是1.php
当别人请求这个文件的时候
这个文件就会被执行 然后返回给客户端执行后的东西
我的问题是
当a客户访问的时候1.php的时候 这是服务器还没有执行完,
突然后b客户也来访问了 这是1.php是等返回了a的请求在执行b的请求了,还是可以同时执行b的请求
------解决方案--------------------
同时执行b的请求
------解决方案--------------------
其实这涉及到网络模型的问题了。
你知道为什么现在都推崇nginx来取代apache,为什么nginx处理并发问题比apache要强很多吗?
因为apache采用的是linux旧版本内核的select模型,而nginx采用的是2.6+版本的epool模型。
回到具体你说的这个问题上,如果b客户来访问时,服务器等待a客户的处理结果再接受b的请求,这就是select模型的工作方式。从接收到请求后之后,同一个进程会一直follow这整个握手过程,知道response结束。这种模型也很容易遭到ddos攻击。
而epool模型,是异步的。服务器接收到一个请求后,由一个主进程负责把任务合理分工开,有个负责分发任务的线程只负责分发任务,剩余的事情委托给其他线程去处理,其他线程处理完毕后,会callback一下主进程可以response了,然后返回给相应客户端。这样的工作方式,每个请求都不会相互阻塞。
不过这样解释后,你可能会不明白,难道说apache就没法处理并发任务了?一个请求阻塞了,其他的请求都进不来了?当然不是,apache worker模式下会开n个进程,所谓的阻塞,也只会阻塞住一个进程。但select模型的这种工作方式确实效率很低。
这部分知识,你可以去参考libevent
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论