加入收藏 | 设为首页 | 会员中心 | 我要投稿 揭阳站长网 (https://www.0663zz.cn/)- 机器学习、行业智能、决策智能、云计算、AI应用!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

什么是php-fpm?如何进行优化来提升性能?

发布时间:2022-08-10 11:23:21 所属栏目:PHP教程 来源:互联网
导读:什么是php-fpm?下面本篇带大家了解一下php-fpm,介绍一下优化 php-fpm 时我们到底要优化什么,希望对大家有所帮助! PHP是无处不在的,可以说是互联网 Web 应用上使用最广泛的语言。 然而,它的高性能并不为人所知,尤其是在涉及到高并发系统时。这就是为什
  什么是php-fpm?下面本篇带大家了解一下php-fpm,介绍一下优化 php-fpm 时我们到底要优化什么,希望对大家有所帮助!
 
 
  PHP是无处不在的,可以说是互联网 Web 应用上使用最广泛的语言。
 
  然而,它的高性能并不为人所知,尤其是在涉及到高并发系统时。这就是为什么对于这样特殊的用例,正在被 Node (是的,我知道,它不是一种语言)、Go 和 Elixir 等语言接管。
 
  也就是说,您可以做很多事情来改进服务器上的 PHP 性能。本文主要关注 php-fpm 方面的内容,如果您使用Nginx,这是在服务器上的默认配置。
 
  如果你知道 php-fpm 是什么,请直接跳到优化部分。
 
  什么是 php-fpm?
  许多开发人员对 DevOps 方面的知识不太感兴趣,即使是那些对此感兴趣的开发人员,也极少有人知道它的底层原理。有趣的是,当浏览器发送一个请求到运行 PHP 的服务器上时,PHP 也不是最先进行处理请求的服务;而是,HTTP 服务器,Apache 和 Nginx 是其中最主要的两个。「web 服务器」决定如何与 PHP 进行通信,然后传递请求的类型,数据和头部信息到 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进程(因此,我们将请求送到服务器,该请求由服务器接收并传递到服务器 — —太疯狂了!:-P)。
 
  如果你用过Nginx,你会看到这些代码:
 
  location ~ .php$ {
 
      try_files $uri =404;
 
      fastcgi_split_path_info ^(.+.php)(/.+)$;
 
      fastcgi_pass unix:/run/php/php7.2-fpm.sock;
 
      fastcgi_index index.php;
 
      include fastcgi_params;
 
      fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
 
  }
 
  对于这一行:fastcgi_pass unix:/run/php/php7.2-fpm.sock;,它告诉Nginx通过 php7.2-fpm.sock的socket与php进程通信。因此,对于每个传入的请求,Nginx都通过这个文件写入数据,在接收到输出后,将其发送回浏览器。
 
  我必须再次强调,对于如何运行这不是最完整或者最准确的,但对于大多数 DevOps 任务是完全准确的。
 
  除此之外,让我们回顾一下到目前为止所学到的东西:
 
  PHP不会直接接收浏览器发送的请求。像 Nginx 这种 Web 服务器首先会拦截它。
  Web 服务器知道如何连接到PHP进程,并将所有请求数据(粘贴所有内容)传递到 PHP 上。
  PHP 完成其职责后,会将响应发送回 Web 服务器,然后将其发送回客户端(在大多数情况下为浏览器)。

(编辑:揭阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读