返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP中的FPM是做什么的
  • 644
分享到

PHP中的FPM是做什么的

2024-02-27 19:02:39 644人浏览 泡泡鱼
摘要

FPM是FastCGI Process Manager的缩写,由全称我们可以知道其和FastCGI有关,就是一个FastCGI的进程管理器。对于FastCGI我们可以理解成一个协议,儿FPM是其在PHP

FPM是FastCGI Process Manager的缩写,由全称我们可以知道其和FastCGI有关,就是一个FastCGI的进程管理器。对于FastCGI我们可以理解成一个协议,儿FPM是其在PHP中的一个实现。

FPM的出现实现了php应用的分布式部署,这样使得PHP和WEB服务器可以在不同的机器上。当然与其说是FPM不如说是FastCGI的出现。最初FPM并没有被PHP的官方正式应用于PHP中,只是作为PHP的一个补丁应用。但是自从PHP5.3.3版本以后FPM被正式捆绑进PHP中,作为了PHP的一部分。这样我们配置起来比较方便,只需在PHP编译的时候添加—enable-fpm选项即可

php-5.6.9]# ./configure –enable-fpm  

Fpm的简单配置

Fpm在php编译的时候添加—enable-fpm选项即可启动fpm,此外在编译的时候还有两个选项分别是 –with-fpm-user=USER 和—with-fpm-group=GROUP,用来设定fpm所属的用户和用户组。如果不指定这两项,那默认的用户和用户组都是nobody。当然这两项也可以在fpm的配置文件php-fpm.conf(其所在目录为PHP安装目录/etc/php-fpm.conf)中修改。

user = nobody 
//所属用户
group = nobody
//所属组
listen = 127.0.0.1:9000 
//fpm所在服务器的ip地址和监听的端口号,默认为9000
pm = dynamic 
//设置进程管理器是如何管理子进程的,dynamic动态管理至少会有一个子进程被创建,其数量有个最大值由pm.max_children来设定,而创建的数量由pm.start_servers来设定;static 静态管理设置固定数量的子进程随着服务启动而被创建;ondemand 在服务启动的时候并不创建子进程只是当有请求的时候才根据情况创建。
pm.max_children = 10
//当pm设置为static的时候,此值表示随着服务的启动创建的子进程的数量;当pm设置为dynamic或者ondemand的时候,此值表示创建的子进程最多不能超过此数量
pm.start_servers = 2
//表示随着服务启动创建的子进程(注意这里是子进程而不是线程)的数量,此选项只有在pm 设置为dynamic的时候才有效。并且这个值默认设置为 min_spare_servers + (max_spare_servers – min_spare_servers)/2,并且如果此值设为0,那么创建的子进程的数量也是由上述公式决定。
pm.min_spare_servers = 1
//要求闲置的服务进程的数量的最小值
pm.max_spare_servers = 3
//闲置的服务进程的数量的最大值
pm.process_idle_timeout = 10s
//进程的闲置时间,以秒为单位,超过这个时间该进程将会被杀死

Fpm的应用

下面我们来看一下如何管理fastcgi服务,首先我们可以进入php安装目录

~]# cd /usr/local/php5
php5]# ./sbin/php-fpm
//开启fastcgi服务,开启服务以后会在/usr/local/php5/var/run/php-fpm.pid中有fastcgi主进程id
php5]# kill –INT `cat /usr/local/php5/var/run/php-fpm.pid`
//关闭fastcgi服务
php5]# kill –USR2 ` cat /usr/local/php5/var/run/php-fpm.pid`
//重启fastcgi服务
 

Fpm使用说明

在fpm简单配置中我们提到pm=dynamic和pm.start_servers =2。当开启fastcgi服务以后首先我们查看 php-fpm.pid

php5]# cat /usr/local/php5/var/run/php-fpm.pid //其结果为
32407
php5]# ps x | grep php-fpm   //接着我们使用此命令查看其主进程情况
32407 ?        Ss     0:00 php-fpm: master process (/usr/local/php5/etc/php-fpm.conf)
php5]# ps –ef | grep php-fpm         //然后再使用该命令查看其所有进程情况
root  32407 1 0 13:46 ? 00:00:00 php-fpm: master process (/usr/local/php5/etc/php-fpm.conf)
nobody   32408 32407  0 13:46 ?        00:00:00 php-fpm: pool www          
nobody   32409 32407  0 13:46 ?        00:00:00 php-fpm: pool www

在这里我们看到了三条信息,第一条是主进程,由系统创建,其id为32407,父进程id为1。剩余两条是其子进程,因为在pm.start_servers = 2 我们设置的为2,所以随着服务的启动会创建两个子进程。这两个子进程的用户都是nobody(user=nobody),其进程id分别是 32408、32409,第三项是这两个子进程的父进程的id 32407。

当然fpm至少会创建一个子进程,因为如果start_servers 设置为0 那么其会根据上面我们说的那个公式计算出子进程的数量。当然如果我们设置min_spare_servers 和max_spare_servers都为0,那子进程的数量为0,这样的话是不能启动服务的(这些设置有效的前提是pm设为dynamic)。因为fpm使用用户为nobody的子进程来处理请求的,那个由系统创建的主进程——id为32407,所属用户为root——是不能处理请求的。当然我们可以根据我们服务器的实际情况(例如:内存大小)来优化我们这里的进程数量。

以上只是简单的介绍了fpm的配置与使用,目的就是为了说明fpm的作用。

--结束END--

本文标题: PHP中的FPM是做什么的

本文链接: https://lsjlt.com/news/568929.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP中的FPM是做什么的
    FPM是FastCGI Process Manager的缩写,由全称我们可以知道其和FastCGI有关,就是一个FastCGI的进程管理器。对于FastCGI我们可以理解成一个协议,儿FPM是其在PHP...
    99+
    2024-02-27
  • php中fpm指的是什么意思
    小编给大家分享一下php中fpm指的是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php中fpm的意思是PHPFastCGI管理器,而对于PHP5.3....
    99+
    2023-06-15
  • PHP-FPM是什么
    PHP-FPM是提供了进程管理的功能,包含master和worker两种进程,而master进程只有一个,负责监听端口,接收来自服务器的请求,worker进程的数量则是根据实际需要进行配置,每个进程内部都会嵌入一个PHP解释器,是代码真正执...
    99+
    2024-04-02
  • php中fpm的三种模式分别是什么
    这篇文章主要介绍“php中fpm的三种模式分别是什么”,在日常操作中,相信很多人在php中fpm的三种模式分别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中fpm的三种模式分别是什么”的疑惑有所...
    99+
    2023-06-20
  • php是做什么用的
    PHP能用来做网站以及Web应用开发的,还可以做服务端脚本和命令行脚本,并且能够编写桌面应用程序,基本上互联网上绝大多数网站都是PHP开发的,PHP 语言作为当今最热门的网站程序开发语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库...
    99+
    2024-04-02
  • PHP-FPM、Nginx和FastCGI间的关系是什么
    这篇文章主要介绍了PHP-FPM、Nginx和FastCGI间的关系是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP-FPM,Nginx,FastCGI 之间的关系...
    99+
    2023-06-15
  • php架构师主要是做什么的
    小编给大家分享一下php架构师主要是做什么的,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、WampServer,WampServer也同...
    99+
    2023-06-14
  • PHP-FPM安装失败的原因和解决方法是什么
    这篇文章主要介绍了PHP-FPM安装失败的原因和解决方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP-FPM安装失败的原因和解决方法是什么文章都会有所收获,下面我们一起来看看吧。原因分析PHP-F...
    99+
    2023-07-05
  • java是做什么的
    java是做什么的?java就是计算机编程语言Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言...
    99+
    2017-03-06
    java入门 java
  • javascript是做什么的
    本篇内容介绍了“javascript是做什么的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • eval是做什么的
    一、什么是eval eval()函数可以将传入的字符串当作JavaScript代码进行执行。例如,如果你有一个字符串”3 + 2″,你可以使用eval()函数来执行这个字符串,并得到结果5。eval()函数的返...
    99+
    2023-10-29
    做什么 eval
  • TensorFlowServing是做什么的
    TensorFlowServing是一个用于部署机器学习模型的开源系统。它可以帮助用户将训练好的TensorFlow模型部署到生产环...
    99+
    2024-03-01
    TensorFlow
  • redis是做什么的
    redis是一款开源、内存内的数据结构存储,主要提供缓存、消息队列、会话管理等功能。其核心优势在于速度、灵活性、可扩展性、持久性和高可用性,广泛用于电子商务、社交媒体、游戏等领域。 R...
    99+
    2024-04-08
  • pycharm是做什么的
    pycharm 是一款专为 python 开发人员设计的综合 ide,具有强大的特性:代码编辑器:语法高亮、自动补全和错误检测调试器:断点、单步执行和变量检查单元测试:支持 unitte...
    99+
    2024-04-04
    linux python macos pycharm 重构代码
  • PHP是做什么用的?探究PHP的作用与功能
    PHP是一种广泛应用于Web开发的服务器端脚本语言,它的主要作用是生成动态网页内容,与HTML结合使用,可以创建出丰富多彩的网页。PHP的功能强大,它可以执行各种数据库操作、文件操作、...
    99+
    2024-04-02
  • ZooKeeper中的ACL是用来做什么的
    ZooKeeper中的ACL(Access Control List)用来控制对ZooKeeper节点的访问权限。通过ACL,可以限...
    99+
    2024-03-06
    ZooKeeper
  • Cassandra中的Snitch是用来做什么的
    Cassandra中的Snitch是用来确定节点之间的拓扑结构和网络拓扑结构的工具。它负责确定节点之间的距离和通信延迟,以帮助Cas...
    99+
    2024-04-02
  • Zabbix中的Proxy是用来做什么的
    Zabbix中的Proxy是用来帮助管理大型网络环境或分布式环境的监控代理。Proxy可以帮助分担Zabbix Server的工作负...
    99+
    2024-04-02
  • php-fpm和swoole有什么区别
    本教程操作环境:windows10系统、PHP7.1版、DELL G3电脑php-fpm和swoole有什么区别一.PHP-FPM早期版本的 PHP 并没有内置的 WEB 服务器,而是提供了 SAPI(Server API)给第三方做对接。...
    99+
    2019-08-28
    PHP
  • php是做啥的
    php即“超文本预处理器”,是在服务器端执行的脚本语言,用于web开发;php的作用有:1、生成动态页面内容;2、创建、打开、读取、写入、删除以及关闭服务器上的文件;3、接收表单数据;4、添加、删除、修改数据库中的数据;5、限制用户访问网站...
    99+
    2023-05-14
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作