同一个接口,客户端短时间内发送两个AJAX请求。
当第一个请求还没返回的时候,发起第二个请求,服务器端的PHP是怎么处理?
拿PHP-FPM来说,其是一个C实现的内嵌PHP解释器的多进程FastCGI服务.一个工作进程在同一时刻只能accept处理一个请求,其他请求会进入到listen.backlog(默认值511)队列中排队等待处理.I/O密集操作配合Nginx可以分离到PHP-FPM特定的进程池进行操作,计算密集的操作的FPM进程数可以设为2倍CPU核心数,I/O密集的可以多点.所以用尽量少的PHP代码实现服务才能获得高性能,显然,现在很多PHP框架跟这点是背道而驰的,这应该也是为什么PHP之父并不喜欢框架,因为他开发PHP的初衷就是封装一套C的API方便Web开发,可以认为PHP就是C实现的Web框架.
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
现在市面上支持PHP的服务器程序普遍都是以多进程方式运行的,也就是同时会有多个PHP进程来处理请求。当一个请求还在处理中,又有请求到来时,会把这个请求交给其他的进程去处理。直到并发请求量超过设置的并发进程数量,才会进行排队等待。