【PHP面试题81】php-fpm是什么?它和PHP有什么关系

news2024/12/23 8:40:35

文章目录

  • 🚀一、前言,php-fpm是什么
  • 🚀二、php-fpm与PHP之间的关系
  • 🚀三、php-fpm解决的问题
    • 🔎3.1 进程管理
    • 🔎3.2 进程池管理
    • 🔎3.3 性能优化
    • 🔎3.4 并发处理
  • 🚀四、php-fpm常见配置
  • 🚀五、总结


🚀一、前言,php-fpm是什么

本文已收录于PHP全栈系列专栏:PHP面试专区。做全网最全最有营养的PHP面试大全。
计划将全覆盖PHP开发领域所有的面试题,对标资深工程师/架构师序列,欢迎大家提前关注锁定。

php-fpm(PHP FastCGI Process Manager)是PHP的一个进程管理器,它作为FastCGI进程管理器来运行,负责管理和调度PHP进程的生命周期。它是PHP 5.3.3版本以后的一个独立项目,主要改进了PHP的并发处理能力和性能。

在这里插入图片描述

🚀二、php-fpm与PHP之间的关系

php-fpm与PHP是密切相关的。PHP本身是一种脚本语言,用于编写Web应用程序。而php-fpm则是PHP的进程管理工具,用于管理和调度PHP进程。php-fpm通过与Web服务器(如Nginx、Apache等)之间的接口(如FastCGI)进行通信,使得PHP脚本能够以进程的方式运行,并提供了更好的性能和并发处理能力。
在这里插入图片描述

🚀三、php-fpm解决的问题

php-fpm主要解决了PHP的并发处理能力和性能问题。在传统的PHP CGI模式下,每次请求都需要重新启动一个PHP进程来处理,这样会消耗较高的资源和时间。而php-fpm通过进程管理,将PHP进程保持在内存中,不需要重复启动,大大提高了PHP的请求处理效率。

具体来说,php-fpm解决了以下几个问题:

🔎3.1 进程管理

php-fpm采用多进程模型,可以根据配置的最小和最大进程数来自动管理PHP进程,以适应不同的请求负载。

🔎3.2 进程池管理

php-fpm还支持配置进程池,可以根据需求将PHP进程分组管理,提供更好的资源控制和调度策略。

🔎3.3 性能优化

php-fpm通过通过对PHP进程的复用,避免了重复启动进程的开销,提供更高的性能。

🔎3.4 并发处理

php-fpm通过多进程模型,可以同时处理多个请求,提供了更好的并发处理能力。

🚀四、php-fpm常见配置

php-fpm的配置文件一般位于/etc/php-fpm.conf/etc/php-fpm.d/www.conf(具体位置可能因不同操作系统而异)。

以下是php-fpm常见的配置项:

  1. listen:指定php-fpm监听的地址和端口,默认为127.0.0.1:9000

  2. usergroup:指定运行php-fpm进程的用户和用户组。

  3. pm:指定php-fpm的进程管理方式,常见的有dynamicstaticondemand等。

  4. pm.max_children:当pm为dynamicondemand时,指定最大子进程数量。

  5. pm.start_servers:当pm为dynamic时,指定启动时的子进程数量。

  6. pm.min_spare_serverspm.max_spare_servers:当pm为dynamic时,指定空闲子进程的数量上下限。

  7. pm.process_idle_timeout:当pm为ondemand时,指定空闲进程的超时时间。

  8. catch_workers_output:是否将每个PHP进程的输出重定向到主进程的错误日志中。

  9. php_admin_valuephp_admin_flag:设置php.ini配置文件中的值。

  10. slowlogrequest_slowlog_timeout:慢日志相关的配置项,用于记录执行时间较长的请求。

以上只是php-fpm的一部分常见配置项,实际使用中还可以根据需求进行更详细的配置。

🚀五、总结

php-fpm是PHP的一个进程管理器,负责管理和调度PHP进程的生命周期。它通过改进PHP的并发处理能力和性能,解决了传统CGI模式下的性能问题。php-fpm通过进程管理、进程池管理和性能优化等方式,提高了PHP的请求处理效率和并发处理能力。常见的php-fpm配置项包括监听地址和端口、进程管理方式、最大子进程数量、用户和用户组等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/914249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一题——排序链表(递归 + 迭代)

排序链表(递归 迭代) 题目链接 注:本体的解法建立在归并排序的基础之上,如果对这一排序还不太了解,建议看看: 👉归并排序 👉八大排序算法详解 👉合并两个有序链表 既…

初学Zephyr系统,相关文档参考

https://docs.zephyrproject.org/3.0.0/reference/kconfig/index-all.html Zephyr下所有配置项Configuration Options 链接如上,写个博客防止自己找不到 我在调试NCS中的例程的时候会需要对prj.conf进行配置从而对Kconfig进行配置 BLE的相关API可参考https://do…

[oneAPI] 基于BERT预训练模型的英文文本蕴含任务

[oneAPI] 基于BERT预训练模型的英文文本蕴含任务 Intel DevCloud for oneAPI 和 Intel Optimization for PyTorch基于BERT预训练模型的英文文本蕴含任务语料介绍数据集构建 模型训练 结果参考资料 比赛:https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0…

Spring@Scheduled定时任务接入XXL-JOB的一种方案(基于SC Gateway)

背景 目前在职的公司,维护着Spring Cloud分布式微服务项目有25个。其中有10个左右微服务都写有定时任务逻辑,采用Spring Scheduled这种方式。 Spring Scheduled定时任务的缺点: 不支持集群:为避免重复执行,需引入分…

基于jeecg-boot的flowable流程加签功能实现

更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/nbcio-boot 前端代码:https://gitee.com/nbacheng/nbcio-vue.git 在线演示(包括H5) : http://122.227.135.243:9888 今天我…

【C++】C++ 引用详解 ① ( 变量的本质 - 引入 “ 引用 “ 概念 | 引用语法简介 | 引用做函数参数 | 复杂类型引用做函数参数 )

文章目录 一、变量的本质 - 引入 " 引用 " 概念1、变量的本质 - 内存别名2、引入 " 引用 " 概念 - 已定义变量的内存别名3、" 引用 " 的优点 二、引用语法简介1、语法说明2、代码示例 - 引用的定义和使用 三、引用做函数参数1、普通引用必须初始…

minikube安装

minikube也是需要docker环境的,首先看一下docker 下载docker.repo源到本地 通过repo里面查找最新的docker 开始安装docker 修改docker 下载加速地址, systemctl deamon-reload 下载minikube minikube start | minikube curl -LO https://storage.goog…

Mybatis(二)映射文件配置与动态SQL

Mybatis(二)映射文件配置 1.Mybatis映射文件配置 1.入参 1.1.parameterType(了解) CRUD标签都有一个属性parameterType,底层的statement通过它指定接收的参数类型。入参数据有以下几种类型:HashMap,基本数据类型&a…

会计资料基础

会计资料 1.会计要素及确认与计量 1.1 会计基础 1.2 六项会计要素小结 1.3 利润的确认条件 1.3.1 利润的定义和确认条件 1.4 会计要素及确认条件 2.六项会计要素 2.1 资产的特征及其确认条件 这部分资产可以给企业带来经济收益,但是如果不能带来经济利益&#xff…

提升团队合作效率:企业网盘的文件管理和协作利用方法

随着信息技术的飞速发展,企业越来越依赖于网络和云服务来提高工作效率。在这样的背景下,企业网盘作为一种重要的在线存储和协作工具,正在被越来越多的企业所采用。本文将探讨如何利用企业网盘进行文件管理和协作,从而构建高效的团…

Windows快捷键常用介绍,提高工作(摸鱼)效率

一:背景 本文主要是讲解Windows电脑常见的快捷键,包括ctrl快捷键,win快捷键,不管是开发人员还是普通办公人员,都是很方便的。我们平时没事操作都是用鼠标去选择对应的功能,或者在我的电脑--控制面板寻找&a…

把matlab的m文件打包成单独的可执行文件

安装Matlab Compiler Adds-on在app里找到Application Compiler 选择要打包的文件matlab单独的运行程序的话需要把依赖的库做成runtime. 这里有两个选项. 上面那个是需要对方在联网的情况下安装, 安装包较小.下面那个是直接把runtime打包成安装程序, 大概由你的程序依赖的库的多…

谷粒商城环境搭建一:Docker容器部署

Docker容器部署 VMware虚拟机安装 参考:VMware虚拟机安装Linux教程 Docker安装 Linux安装Docker # 1.更新apt包索引 sudo apt-get update# 2.安装以下包以使apt可以通过HTTPS使用存储库(repository) sudo apt-get install -y apt-transpor…

滑动窗口介绍

1.基本概念 利用单调性,使用同向双指针,两个指针之间形成一个窗口 子串与子数组都是连续的一段子序列时不连续的 2.为什么可以用滑动窗口? 暴力解决时发现两个指针不需要回退(没必要回退,一定不会符合结果&#xf…

什么是有效的预测性维护 ?

在现代制造业的背景下,设备的可靠性和生产效率成为了企业追求的关键目标。而预测性维护(Predictive Maintenance,简称PdM)作为一种先进的维护策略,逐渐成为了实现这些目标的重要工具。然而,什么是有效的预测…

2023年国赛数学建模思路 - 案例:随机森林

文章目录 1 什么是随机森林?2 随机深林构造流程3 随机森林的优缺点3.1 优点3.2 缺点 4 随机深林算法实现 建模资料 ## 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 什么是随机森林&#xff…

AP9235 dc-dc升压恒流电源驱动IC 2.8-30V 输出电流2A SOT23-6

概述 AP9235B 系列是一款固定振荡频率、恒流输出的升压型DC/DC转换器,非常适合于移动电话、PDA、数码相机等电子产品的背光驱动。输出电压可达30V ,3.2V输入电压可以驱动六个串联LED, 2.5V输入电压可以驱动两路并联LED(每路串联…

你不知道的 malloc 内幕

你不知道的 malloc 内幕 1. 引言:一个例子例1例2 2. 基础概念2.1 内存管理发展过程2.2 虚拟存储器2.3 内存分配机制2.4 VMA2.4.1 进程的 VMA2.4.2 vma 分析 3. 实例分析3.1 malloc 到底干了啥3.2 memset 的偷天换日3.2.1 虚拟地址转物理地址3.2.2 page fault 3.3 fr…

线程池UncaughtExceptionHandler无效?可能是使用方式不对

背景 在业务处理中,使用了线程池来提交任务执行,但是今天修改了一小段代码,发现任务未正确执行。而且看了相关日志,也并未打印结果。 源码简化版如下: 首先,自定义了一个线程池 public class NamedThrea…

iMX6ULL QT环境配置 | CMake在Linux下的交叉编译环境搭建及使用

习惯了使用cmake,再也不想回到手写makefile的年代了。相比手写makefile,使用cmake则像是实现了机动化,管理项目工程的编译变得很简单了。况且cmake很流行,linux下的很多软件源码包,很多也都使用了cmake的方式编译。因此…