高性能优化PHP-FPM是什么

  介绍

小编给大家分享一下高性能优化PHP-FPM是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

PHP是无处不在的,可以说是互联网网络应用上使用最广泛的语言。

然而,它的高性能并不为人所知,尤其是在涉及到高并发系统时。这就是为什么对于这样特殊的用例,正在被节点(是的,我知道,它不是一种语言),去和药剂等语言接管。

也就是说,您可以做很多事情来改进服务器上的PHP性能。本文主要关注<代码> PHP-FPM 方面的内容,如果您使用Nginx,这是在服务器上的默认配置。

如果你知道<代码> PHP-FPM>

什么是PHP-FPM吗?

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

高性能优化PHP-FPM是什么

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

在现代PHP应用中,“找到文件”部分即为<代码>索引。php代码文件,它是在服务器配置文件中配置的用于处理所有请求的代理。

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

所以每当一个请求被接收,服务器将开启一个新的进程,它将自动包含php和执行请求。这个方法被称作<代码> mod_php> php-fpm 克服了它。

在<代码> php-fpm>

如果你用过<代码> Nginx>

位置。php $ {
  try_files uri=404美元;
  fastcgi_split_path_info ^ (. + \。php)美元(/+);
  fastcgi_pass unix://php/php7.2-fpm.sock运行;
  fastcgi_index index . php。
  包括fastcgi_params;
  fastcgi_param SCRIPT_FILENAME document_root fastcgi_script_name美元;
  }

对于这一行:<代码> fastcgi_pass unix:/运行/php/php7.2-fpm.sock;> php7.2-fpm。袜子的<代码>插座>

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

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

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

流程图如下:

高性能优化PHP-FPM是什么

php和Nginx如何协同工作?(图片数据狗)

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

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

PHP-FPM本身就是一个完整的兔子洞,所以如果您愿意,可以随意探索,但是对于我们的目的,这些解释就足够啦。

为什么要优化PHP-FPM吗?

一般在正常运行的情况下,为什么要考虑优化呢?为什么不将事物保持原样。

具有讽刺意味的是,一般我为大多数用例提供建议的话。如果您的设置运行良好,并且没有特殊用例,请使用默认设置。但是,如果您希望扩展一台机器之外的能力,那么从一台机器中挤出最大的处理能力是必不可少的,因为它可以将您服务器的花费减少一半(甚至更多!)。

高性能优化PHP-FPM是什么