php 运行原理

说到这个php 运行原理,其实每个phper 或多或少都知道点,只是不善于组织,如何用书面上的语言表述出来,所以回答的时候,答不清楚,说实话,其实我也不另外,也是忘记了,没办法,只能每次想起来的时候看一遍,后面又忘记,然后又看一遍,如此往复…… 好了,废话不多说了

首先来解释一个概念:Web终端

服务器web:我们把提供(响应)服务的计算机称作服务器(Server),也叫服务器端,最常用的三种服务器有:IIS,nginx,apache

客户web:接受(请求)服务的计算机称作客户机(Client),也叫客户端。客户端可以是 web 浏览器,也可以是app,也可以是桌面应用程序。

php的运行原理就是Apache、PHP、浏览器之间的协作过程:

  1. 当用户在浏览器地址中输入要访问的PHP页面文件名,然后回车就会触发这个PHP请求,并将请求传送化支持PHP的WEB服务器;
  2. WEB服务器接受这个请求,并根据其后缀进行判断如果是一个PHP请求,WEB服务器从硬盘或内存中取出用户要访问的PHP应用程序,并将其发送给PHP引擎程序;
  3. PHP引擎程序将会对WEB服务器传送过来的文件从头到尾进行扫描并根据命令从后台读取,处理数据,并动态地生成相应的HTML页面;
  4. PHP引擎将生成HTML页面返回给WEB服务器。WEB服务器再将HTML页面返回给客户端浏览器,最后一个完整的页面基于通过浏览器展现在我们眼前;

php运行模式

  1. cgi 通用网关接口 (Common Gateway Interface); 
  2. fast-cgi 常驻(Long-live) 型的cgi;
  3. cli 命令行运行 (Command Line Interfact);
  4. web 模块模块 (apache 等服务器运行的模块模式),也就是我们常说的apache2handler 模式;

cgi 模式,fast-cgi模式详解:

这是webserver和PHP直接的另一种交互方式,也就是大名鼎鼎的fastcgi协议,在最近fastcgi+PHP得到越来越多的应用,也是异步webserver所唯一支持的方式;典型应用nginx服务器;fastcgi 说白点直接点就是 php的一个扩展

  • Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module);
  • php-fpm进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接;
  • 当客户端请求到达Web Server时,php-fpm进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi;
  • FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了;
  • 在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作;

最好记住单词,这样显得高大上之类的

原文地址:https://www.cnblogs.com/fangdada/p/14970803.html