摘要:工作原理首先先了解下常听说的,,,到底是什么关系,帮助了解的工作原理协议协议用来确定例如,也就是内容分发服务器传递过来什么数据,什么样格式的数据进程解释器是的协议进程解释器,每次启动时,需要经历加载文件初始化执行环境处理请求返
php工作原理
首先先了解下常听说的cgi,php-cgi,fastcgi,php-fpm到底是什么关系,帮助了解php的工作原理
cgi协议cgi协议用来确定webserver(例如nginx),也就是内容分发服务器传递过来什么数据,什么样格式的数据
php-cgi进程解释器php-cgi是php的cgi协议进程解释器,每次启动时,需要经历加载php.ini文件->初始化执行环境->处理请求->返回内容给webserver->php-cgi进程退出的流程
fastcgi协议fastcgi协议是对cgi协议效率提升的补充,主要是针对每次请求过来时都需要启动一个cgi解释器进程的优化,不再需要cgi解释器进程每次收到webserver请求后都需要重新加载php.ini文件和初始化执行环境
php-fpm进程管理器php-fpm是对fastcgi协议的实现,是进程管理器,启动时包括master和worker进程俩部分,master进程监听端口,接收来自webserver请求,worker进程一般具有多个,每个worker进程都有一个cgi进程解释器,用来执行php代码
php启动和工作原理启动phpfpm时,会启动master进程,加载php.ini文件,初始化执行环境,并启动多个worker进程。每次请求来时会将请求传递给worker进程进行处理
php平滑重启原理每次修改完php.ini配置并重启后,会启动新的worker进程加载新的配置,而之前已经存在的进程会在工作完成之后销毁,因此实现平滑重启
nginx工作原理如果想弄明白nginx和php配合的原理,还需要先了解nginx的配置文件中的server部分
server { listen 80; #监听80端口,接收http请求 server_name www.example.com; #一般存放网址,表示配置的哪个项目 root /home/wwwroot/zensmall/public/; # 存放代码的根目录地址或代码启动入口 index index.php index.html; #网站默认首页 #当请求网站的url进行location的前缀匹配且最长匹配字符串是该配置项时,按顺序检查文件是否存在,并返回第一个找到的文件 location / { #try_files,按顺序检查文件是否存在,返回第一个找到的文件 #$uri代表不带请求参数的当前地址 #$query_string代表请求携带的参数 try_files $uri $uri/ /index.php?$query_string; #按顺序检查$uri文件,$uri地址是否存在,如果存在,返回第一个找到的文件;如果都不存在,发起访问/index.php?$query_string的内部请求,该请求会重新匹配到下面的location请求 } #当请求网站的php文件的时候,反向代理到php-fpm去处理 location ~ .php$ { include fastcgi_params; #引入fastcgi的配置文件 fastcgi_pass 127.0.0.1:9000; #设置php fastcgi进程监听的IP地址和端口 fastcgi_index index.php; #设置首页文件 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #设置脚本文件请求的路径 } }
上面server配置的整体含义是:每次nginx监听到80端口的url请求,会对url进行location匹配。如果匹配到/规则时,会进行内部请求重定向,发起/index.php?$query_string的内部请求,而对应的location配置规则会将请求发送给监听9000端口的php-fpm的master进程
总结下面总结下最简单的用户请求流程:
用户访问域名->域名进行DNS解析->请求到对应IP服务器和端口->nginx监听到对应端口的请求->nginx对url进行location匹配->执行匹配location下的规则->nginx转发请求给php->php-fpm的master进程监听到nginx请求->master进程将请求分配给其中一个闲置的worker进程->worker进程执行请求->worker进程返回执行结果给nginx->nginx返回结果给用户
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/40344.html
摘要:工作原理首先先了解下常听说的,,,到底是什么关系,帮助了解的工作原理协议协议用来确定例如,也就是内容分发服务器传递过来什么数据,什么样格式的数据进程解释器是的协议进程解释器,每次启动时,需要经历加载文件初始化执行环境处理请求返 php工作原理 首先先了解下常听说的cgi,php-cgi,fastcgi,php-fpm到底是什么关系,帮助了解php的工作原理 cgi协议 cgi协议用来确...
摘要:其主要行为是将解释器进程保持在内存中并因此获得较高的性能。当子进程关闭连接时,请求便处理完成。 关于factcgi和cgi的学习 1、FastCGI是什么? 首先我们看下CGI,CGI全称为通用网关接口 Common Cateway Interface.用于HTTP服务上的程序服务通信交流的一种工具,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器...
摘要:其主要行为是将解释器进程保持在内存中并因此获得较高的性能。当子进程关闭连接时,请求便处理完成。 关于factcgi和cgi的学习 1、FastCGI是什么? 首先我们看下CGI,CGI全称为通用网关接口 Common Cateway Interface.用于HTTP服务上的程序服务通信交流的一种工具,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器...
摘要:作为一名,配置是我们必会的技能项之一。只有请求的路径与后面的字符串完全相等时,才会命中。举例表示该规则是使用正则定义的,区分大小写。举例匹配优先级最后,我们了解下的查找规则。 作为一名PHPer,配置nginx是我们必会的技能项之一。但是当用户请求到达nginx之后,是如何匹配到对应的配置项的呢? location语法规则 首先我们先了解下location的语法规则,location语...
摘要:要说与是如何协同工作的,首先得说和这两个协议。之于标准的,也提供了一些增强功能,具体可以参考官方文档。为了能够使理解协议,提供了模块来将请求映射为对应的请求。 网络上有很多关于如何配置 Nginx + FPM 的文章,但它们更多从操作的角度出发,告诉我们怎么做,但却没有告诉我们为什么要这么做,本文从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理,让我们真正理解 Nginx...
阅读 2289·2023-04-26 00:01
阅读 795·2021-10-27 14:13
阅读 1810·2021-09-02 15:11
阅读 3380·2019-08-29 12:52
阅读 527·2019-08-26 12:00
阅读 2567·2019-08-26 10:57
阅读 3405·2019-08-26 10:32
阅读 2847·2019-08-23 18:29