nginx是如何解析php文件的(PHP-FPM)

本文详细解析了Nginx作为高性能HTTP服务器和反向代理服务器的角色,以及其如何通过PHP-FPM处理PHP文件。介绍了PHP-FPM的工作机制,包括master进程和worker进程的作用,以及Nginx与PHP-FPM间的通信流程。

我们先来了解下nginx,想要了解nginx我们先来看下面这两个概念:

正向代理 翻墙访问谷歌
对于人来说可以感知到,但服务器感知不到,我们叫他正向代理服务器。

反向代理 访问百度 中间有个负载代理服务器
对于人来说不可感知,但对于服务器来说是可以感知的,我们叫他反向代理服务器

而nginx就是一个高性能的http和反向代理服务器,也是一个IMAP/POP3/SMTP服务器

nginx解析PHP文件实际上是通过一个叫做 PHP-FPM 的工具来解析的,那么我们下面来看下什么是PHP-FPM

Php-fpm:php-Fastcgi Process Manager. PHP的FastCGI进程管理器

要想知道什么是PHP-fpm,首先要知道什么是fastcgi,更要知道什么是cgi

Cgi 通用网关接口,是Web 服务器运行时外部程序(php,python)的规范

Web服务器早期只处理html静态文件,当php等动态语言出现后处理不了,就需要使用各个动态语言的解释器,那么解释器和web服务器之间的通信标准或者协议或者接口就是cgi。实际上每次php文件的访问都会fork出一个进程进行处理

Fastcgi 是常驻型的cgi,类似于长连接,只要激活后,一直执行,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。

php-fpm是 FastCGI 的实现,并提供了进程管理的功能。

php-fpm进程包含 master 进程和 worker 进程两种进程。

master 进程只有一个,负责监听端口,接收来自 Web Server 的请求

worker 进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方。

还有如果在PHP-FPM管理下的某个FastCGI进程挂了,PHP-FPM会根据用户配置来看是否要重启补全,PHP-FPM更像是管理器,而真正衔接Nginx与PHP的则是FastCGI进程

那么nginx和php-fpm到底是怎么工作的呢。请听下回分解。

开玩笑,咱们这次就了解了解,往↓看,
在这里插入图片描述
通过nginx定义我们知道,Nginx不只有处理http请求的功能,还能做反向代理,所以

1.客户端通过http协议访问网站域名
2.Nginx接受请求,判断如果是php文件
3.那么加载fastcgi模块
4.通过fastcgi_pass转发到127.0.0.1:9000端口
5.而我们的php-fpm正好监听127.0.0.1:9000端口,也就接收到了请求
6.Fpm的master主进程接收到请求后,会分配子进程去处理请求
7.子进程中包含php解释器,解释PHP文件后,返回结果给nginx
8.Nginx通过http协议响应给客户端

Nginx负责承载HTTP请求的响应与返回,以及超时控制记录日志等HTTP相关的功能,而PHP则负责处理具体请求要做的业务逻辑,它们俩的这种合作模式也是常见的分层架构设计中的一种,在它们各有专注面的同时,FastCGI又很好的将两块衔接,保障上下游通信交互

查看fpm进程,可分为主进程和子进程
ps -ef | grep fpm
在这里插入图片描述
通过上面这张图片,我们可以清晰的看到php-fpm的进程关系

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值