http://www.awforest.com

                                                                  【罗马好运彩注册】php是用什么解析的-PHP问题

                                                                  PHP是一种服务器脚本语言,也是一种解释型语言。广泛用于中小型网站的建设,没有java那么重,开发又比较快,但是这种脚本语言是如何被服务器解析的呢?

                                                                  我们都知道PHP是可以嵌入到HTML中的,但是文件的后缀必须得是以.php结尾,如果是.html,PHP的代码片段是会被浏览器直接注释,我这里就不演示了,下面我们看个例子:

                                                                  #test1.php<!DOCTYPE html><html><head>  <meta charset="UTF-8">  <title>test</title></head><body>  <?php       echo "我是一段PHP脚本";  ?></body></html>

                                                                  用PHPstudy后通过浏览器访问时这样的结果:

                                                                  1569651713(1).png

                                                                  这是一段十分简单的代码,我们可以看到,服务器直接将解析后的结果传给了浏览器,其实当服务器发现请求的资源后缀是.php就会调用PHP的解析器将其进行解析,执行里面PHP代码后再将资源回应给客户端。那么重点就来了,PHP代码是如何被解析的呢?首先我们得先了解cgi,fastcgi,php-fpm的相关概念。

                                                                  相关推荐:《php入门教程》

                                                                  cgi是什么?

                                                                  cgi(通用网关接口)实际上是一种协议,实现cgi协议的程序我们可以称之为cgi程序,CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。而php-cgi就是用来解析PHP代码的一种协议。但是这种协议有几个弊端。首先,每当客户端请求一个PHP脚本文件时,服务器就会fork一个进程调用解析器来对该脚本进行解析,当这个脚本执行完毕后该进程就会被kill掉,并且每次fork的进程都会过一遍php.ini来初始化环境。进程无法复用,并且增加了对php.ini的io开销。限制了PHP的执行速度。于是聪明的phper想出了更好的cgi协议,也就是后来出的fastcgi协议。

                                                                  fastcgi协议

                                                                  顾明思议,更快的cgi协议。那么他快在哪里呢?

                                                                  首先fastcg解决了原有的php-cgi的毛病,它允许在一个进程内处理多个请求,而不是一个请求处理完毕就直接结束进程,web服务器性能上有了很大的提高。实际上Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。

                                                                  郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

                                                                  上一篇:专访苹果高阶副总裁席勒:在iPhone 11背后改变一切的A13仿生芯片
                                                                  下一篇:没有了