基于java和php的http协议处理方式对比

2019-08-16 10:29:13来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

基于java和php的http协议处理方式对比

基于java和PHP对一个http请求进行处理的方式可以用下面这个简单的图示体现出来:

1.处理PHP程序的php-fpm服务接收到的是基于CGI(通用网关接口)的数据协议封装过的http数据,所以只要你精通CGI协议,理论上可以自己实现一个类似php-fpm的服务接收CGI数据,然后用自创的一门脚本语言去处理http数据。

2.tomcat是一个web服务容器,它可以像nginx一样监听一个IP和端口,接收http协议的数据。只不过它自身就拥有处理http协议数据的能力,而nginx只能转发给其他模块处理,nginx要不就通过ngx_http_proxy_module将http协议的数据进行转换,交给php-fpm这类的CGI代理服务器用PHP之类的脚本语言处理,要不就利用反向代理的方式直接将数据原样转发给tomcat去处理。由于tomcat可以直接处理http协议数据,所以它可以直接面向客户端,不过一般不会这样做。

3.php-fpm是基于c实现的服务,采用多进程的方式运行,每个http请求由单个进程处理。tomcat是基于java实现的,服务运行在jvm虚拟机内,服务运行采用多线程的方式,每个http请求由单个线程处理,tomcat对http请求的处理是将http的请求和返回数据进行封装后交给一个实现了servlet接口的类去处理,这里体现了java的面向接口编程的特点。

4.php-fpm在处理http请求时,最终会将PHP脚本交给zend引擎处理,这里在每个http请求处理的过程中都要执行一些PHP代码中的初始化逻辑,这是php性能优化的关键和难点所在。而tomcat服务在启动过程中会执行大量java代码的初始化逻辑(参考spring框架的依赖注入——DI),虽然服务启动时间较长,但是在处理请求的过程中省去了大量初始化的时间,处理时间就短了。


原文链接:https://www.cnblogs.com/imyhb/p/11197269.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java 代码界 3% 的王者?看我是如何解错这 5 道题的

下一篇:阿里java开发手册阅读心得