前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【黄啊码】什么是php-fpm?

【黄啊码】什么是php-fpm?

原创
作者头像
黄啊码
发布2022-11-01 18:23:17
4350
发布2022-11-01 18:23:17
举报

大家好!我是黄啊码,从今天开始我们来讲讲拍P黄H片P,嘴快说错了,是PHP,别误会,简单入门的东西我就不过多描述,说多你们也觉得我是在教傻瓜,今天的课程是PHP的FPM。

PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器,对于PHP 5.3.3之前的php来说,是一个补丁包 [1] ,旨在将FastCGI进程管理整合进PHP包中。如果你使用的是PHP5.3.3之前的PHP的话,就必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

相对Spawn-FCGI,PHP-FPM在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行监控,而PHP-FPM则没有这种烦恼。

从PHP 5.4 RC2开始,php-fpm已经转正了,不再被php团队标注为EXPERIMENTAL (实验性的东西) [2-3]

PHP5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载 PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。

——————————以上简述来源于百度百科【主要是我懒得写】———————————

许多开发人员对 DevOps 方面的知识不太感兴趣,即使是那些对此感兴趣的开发人员,也极少有人知道它的底层原理。有趣的是,当浏览器发送一个请求到运行 PHP 的服务器上时,PHP 也不是最先进行处理请求的服务;而是,HTTP 服务器,Apache 和 Nginx 是其中最主要的两个。「web 服务器」决定如何与 PHP 进行通信,然后传递请求的类型,数据和头部信息到 PHP 进程。

上图是 PHP 项目的请求-响应生命周期(图片来源: ProinerTech)

在现代 PHP 应用中,「find file」部分即为 index.php 文件,它是在服务器配置文件中配置的用于处理所有请求的代理。

如今,Web 服务器究竟如何连接 PHP 正在进化,如果我们要深入研究所有细节,这篇文章的长度将激增。但粗略来说, 在 Apache 作为 Web 服务器首选的时间段,PHP 是作为包含在服务器内部的模块。

所以每当一个请求被接收,服务器将开启一个新的进程, 它将自动包含 PHP 和执行请求。这个方法被称作mod_php,“PHP作为一个模块”的缩写。这种方法有其局限性,而 Nginx 和 php-fpm 克服了它。

php-fpm中,管理 PHP 的责任在于服务器内部的 PHP 程序。换言之, Web 服务器 (Nginx, 在本例中), 不在乎 PHP 在哪和怎样运行的,只要它知道如何发送和接收数据即可。如果需要,在这种情况下,您可以将PHP视为另一台服务器,它管理传入请求的某些子PHP进程(因此,我们将请求送到服务器,该请求由服务器接收并传递到服务

如果你用过Nginx,你会看到这些代码:

对于这一行:fastcgi_pass unix:/run/php/php7.2-fpm.sock;,它告诉Nginx通过 php7.2-fpm.socksocket与php进程通信。因此,对于每个传入的请求,Nginx都通过这个文件写入数据,在接收到输出后,将其发送回浏览器。

我必须再次强调,对于如何运行这不是最完整或者最准确的,但对于大多数 DevOps 任务是完全准确的。

除此之外,让我们回顾一下到目前为止所学到的东西:

  • PHP不会直接接收浏览器发送的请求。像 Nginx 这种 Web 服务器首先会拦截它。
  • Web 服务器知道如何连接到PHP进程,并将所有请求数据(粘贴所有内容)传递到 PHP 上。
  • PHP 完成其职责后,会将响应发送回 Web 服务器,然后将其发送回客户端(在大多数情况下为浏览器)。

流程图如下

HP 和 Nginx 如何协同工作? (图片来源:数据狗)

到目前为止都不错, 那么关键问题来了:PHP-FPM到底是什么呢?

PHP 中的 FPM 代表 「快速进程管理器」, 花式解释就是说,在服务器上运行的 PHP 并不是单个进程,而是由这个 FPM 进程管理器派生、控制和终止的一些PHP 进程。web服务器将请求传递给的就是这个进程管理器。

好了,今天的课程学到这里,有问题的留个言,别忘了一键三连,下次我们还会再见!

我是黄啊码,码字的码,退。。。退。。。退。。。朝!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档