php-fpm

PHP-FPM和FastCGI PHP-FPM是基于FastCGI的一种专门用于 PHP 的进程管理工具,提供了更高效的请求处理和更好的性能管理,FastCGI是一种高效的协议,而PHP-FPM是 PHP 的实现FastCGI是一种接口协议,用于将 HTTP 请求与后端应用程序(如 PHP、Python 等)连接。它是CGI)的改进版本,提供了更好的性能和资源管理PHP-FPM是 PHP 的一个实现,它利用FastCGI协议来处理 PHP 请求。它是 PHP 的一个替代方式,提供了进程管理和更好的性能。 阅读详情

首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。

web server(比如说nginx)只是内容的分发者。比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。Nginx会传哪些数据给PHP解析器呢?url要有吧,查询字符串也得有吧,POST数据也要有,HTTP header不能少吧,好的,CGI就是规定要传哪些数据、以什么样的格式传递给后方处理这个请求的协议。仔细想想,你在PHP代码中使用的用户从哪里来的。

当web server收到/index.php这个请求后,会启动对应的CGI程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。

好了,CGI是个协议,跟进程什么的没关系。那fastcgi又是什么呢?Fastcgi是用来提高CGI程序性能的。

提高性能,那么CGI程序的性能问题在哪呢?"PHP解析器会解析php.ini文件,初始化执行环境",就是这里了。标准的CGI对每个请求都会执行这些步骤(不闲累啊!启动进程很累的说!),所以处理每个时间的时间会比较长。这明显不合理嘛!那么Fastcgi是怎么做的呢?首先,Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。

那PHP-FPM又是什么呢?是一个实现了Fastcgi的程序,被PHP官方收了。

大家都知道,PHP的解释器是php-cgi。php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理(皇上,臣妾真的做不到啊!)所以就出现了一些能够调度php-cgi进程的程序,比如说由lighthttpd分离出来的spawn-fcgi。好了PHP-FPM也是这么个东东,在长时间的发展后,逐渐得到了大家的认可(要知道,前几年大家可是抱怨PHP-FPM稳定性太差的),也越来越流行。

fastcgi是一个协议,php-fpm实现了这个协议

对。

有的说,php-fpm是fastcgi进程的管理器,用来管理fastcgi进程的

对。php-fpm的管理对象是php-cgi。但不能说php-fpm是fastcgi进程的管理器,因为前面说了fastcgi是个协议,似乎没有这么个进程存在,就算存在php-fpm也管理不了他(至少目前是)。 有的说,php-fpm是php内核的一个补丁

以前是对的。因为最开始的时候php-fpm没有包含在PHP内核里面,要使用这个功能,需要找到与源码版本相同的php-fpm对内核打补丁,然后再编译。后来PHP内核集成了PHP-FPM之后就方便多了,使用--enalbe-fpm这个编译参数即可。

有的说,修改了php.ini配置文件后,没办法平滑重启,所以就诞生了php-fpm

是的,修改php.ini之后,php-cgi进程的确是没办法平滑重启的。php-fpm对此的处理机制是新的worker用新的配置,已经存在的worker处理完手上的活就可以歇着了,通过这种机制来平滑过度。

还有的说PHP-CGI是PHP自带的FastCGI管理器,那这样的话干吗又弄个php-fpm出

不对。php-cgi只是解释PHP脚本的程序而已。

 https://blog.youkuaiyun.com/u010785091/article/details/78705690###

运行原理:
cgi初始化阶段:分别调用fcgi_init()和 sapi_startup()函数,注册进程信号以及初始化sapi_globals全局变量。
php环境初始化阶段:由cgi_sapi_module.startup 触发。实际调用php_cgi_startup函数,而php_cgi_startup内部又调用php_module_startup执行。 php_module_startup主要功能:a).加载和解析php配置;b).加载php模块并记入函数符号表(function_table);c).加载zend扩展 ; d).设置禁用函数和类库配置;e).注册回收内存方法;
php-fpm初始化阶段:执行fpm_init()函数。负责解析php-fpm.conf文件配置,获取进程相关参数(允许进程打开的最大文件数等),初始化进程池及事件模型等操作。
php-fpm运行阶段:执行fpm_run() 函数,运行后主进程发生阻塞。该阶段分为两部分:fork子进程 和 循环事件。fork子进程部分交由fpm_children_create_initial函数处理( 注:ondemand模式在fpm_pctl_on_socket_accept函数创建)。循环事件部分通过fpm_event_loop函数处理,其内部是一个死循环,负责事件的收集工作。
运行模式
php-fpm支持三种运行模式,分别为static、ondemand、dynamic,默认为dynamic 。

static: 静态模式,启动时分配固定的worker进程。
ondemand: 按需分配,当收到用户请求时fork worker进程。
dynamic: 动态模式,启动时分配固定的进程。伴随着请求数增加,在设定的浮动范围调整worker进程。
————————————————
版权声明:本文为优快云博主「我是图图小淘气」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接: 

 

php-fpm优化 1.通常情况我们修改/etc/php.ini文件,仅会修改错误日志与文件上传 #;;;;;;;;;;;;;;;;; # Error logging ; #;;;;;;;;;;;;;;;;; expose_php = Off # 关闭php版本信息 display_error = Off # 屏幕不显示错误日志 error_reporting = E_WARNING & E_ERROR ... 阅读详情

相关推荐

Selenium自动化测试遇到shadow-root元素?3种实用解决方案帮你搞定

本文针对Selenium自动化测试中遇到shadow-root元素难以定位的常见问题,提供了三种实用的解决方案。详细阐述了通过JavaScript直接穿透Shadow DOM、利用浏览器工具快速获取JS Path以及使用Python第三方库进行优雅封装的方法,并分享了提升脚本健壮性的实战策略与最佳实践,帮助测试人员有效应对现代Web组件化开发带来的挑战。

code8的博客 408

PHP CGI、FastCGI、PHP-FPM、PHP-CGI 区别

是PHP的FastCGI进程管理器,提供了更高级的功能和管理PHP解释器进程的能力;是CGI的改进版本,通过保持长时间运行的PHP解释器进程来提高性能;是最基本的PHP执行方式,每次请求都需要启动新的PHP解释器进程;是PHP的CGI执行程序,可以作为PHP的CGI模式的执行程序。是不同的PHP执行方式和处理程序。

快乐的搬砖的博客 1613

11.15 分析finrl 的框架

11.15 分析finrl 的框架

yueguoqing88的博客 1084

PHP-FastCGI详解

一、什么是 FastCGI FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP。 FastCGI 是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序...

刘大可1017的博客 3427

将雷达连接到树莓派的串口

dev/ttyAMA0 是树莓派的主要 UART(用于 GPIO 引脚 8 (TXD) 和 10 (RXD))。通常,树莓派使用 GPIO 引脚 8 (TXD) 和 10 (RXD) 进行串口通信。树莓派上通常有两个串口:/dev/ttyS0 和 /dev/ttyAMA0。你需要确认雷达的 TX 和 RX 引脚,并与树莓派的对应引脚连接。VCC(电源)连接到树莓派的 3.3V 或 5V(根据雷达的要求)MR(Receive)连接到树莓派的 GPIO 8 (TXD)GND(地)连接到树莓派的 GND。

qq_45943628的博客 1465

基于FPGA的PCIe核系列:FPGA root模式生成工程例子分析(1)

一、 PCIE系统架构 1.1 PCIE分层结构 PCIE结构 1.2 TLP包 四种TLP类型。 Memory (内存空间操作) IO (IO空间操作) Configuration (配置操作) Message (信息操作) 四种类型TLP,如果有需要响应,称为Non-Posted TLP,如果没有需要响应,称为Posted TLP。 TLP包类型 1.2.1 TLP结构 TLP数据格式 1.2.2 Header各个字段的含义 Header格式 ...

huangshanhu的博客 3433

php-fpm与fastcgi、php-cgi之间的关系及源码解析

关于FastCGI、php-cgi、php-fpm的区别是什么,各自有什么用途,以及相互间的关系是什么,查阅相关资料,可谓是众说纷纭,莫衷一是: 说法一:fastcgi是一个协议,php-fpm实现了这个协议; 说法二:php-fpm是FASTCGI进程的管理器,用来管理fastcgi进程的; 说法三:php-fpm是php内核的一个补丁; 说法四:修改了php.ini配置文件后,没办法平滑重启,...

王道长的技术博客 5489

StarRocks慢查询排查实战:从Query Plan到Profile的保姆级调优指南

本文提供StarRocks慢查询排查的实战指南,从Query Plan解析到Profile诊断,详细讲解如何识别执行计划中的危险信号和优化关键指标。通过物化视图优化、分布式执行调整和资源管控方案,帮助DBA快速定位并解决查询性能问题,提升数据库效率。

weixin_42568801的博客 379

php-fpm和php-cgi的区别是什么?底层原理是什么?

FastCGI 是 CGI 的改进版,提供了更好的性能和可扩展性。是多进程模型,它会启动多个 worker 进程来处理请求,并且支持进程池管理。都会将 PHP 脚本编译成字节码,然后将其缓存到内存中,以提高性能。当接收到一个请求时,都会解析请求并加载缓存的字节码,然后将其执行,并将结果返回给客户端。更快,更可靠,更稳定,并且适用于高并发的 web 应用程序。是单进程模型,每个请求都会创建一个新的进程来处理,而。的配置文件通常存储在 web 服务器的配置文件中,而。的配置文件通常是独立的文件。

长风破浪会有时的博客 814

创新实训项目博客:基于LoRA的医疗大模型高效微调实战

预训练大语言模型(LLMs)虽然具备了广泛的知识和一定的通用能力,但在特定领域(如医疗)或特定任务(如遵循特定指令格式进行思考链推理)上,其表现往往不尽如人意。微调(Fine-tuning)能够使模型学习到特定领域的数据分布和任务模式,从而在目标任务上获得更好的性能,使其更贴合实际应用需求。使用Unsloth框架加载并以4-bit量化模型。基于数据集,构建了包含明确思考链引导的训练Prompt。配置了LoRA参数,并使用SFTTrainer在单张T4 GPU上对模型进行了高效微调。

m0_73556916的博客 1290

【自适应调制】自适应调制解调通信链路误码率matlab仿真与分析

BPSK中的B是“Binary”的意思,也就是有两个变化状态,比如说相位上的“+90°(代表1)、-90°(代表0)”,一个状态代表的就是一个比特。QPSK的“Q”是“Quadrature”的意思,有四个变化状态,如相位上的“+45°(代表00)、-45°(代表11)、+135°(代表10)、-135°(代表01)”,那么一个状态就代表两个比特的信息,如图2所示。同理8PSK的一个状态代表三个比特。但是功率资源并不是无限的,基站总的发射功率是一定的,为了充分利用所有的功率,采用的就是AMC技术。

FPGA/MATLAB学习教程/源码/项目合作开发 1833

Prometheus监控PHP-FPM

环境 系统:CentOS 7.5 软件:php-fpm-exporter.linux.amd64 准备 PHP-FPM端 相关连接https://easyengine.io/tutorials/php/fpm-status-page https://blog.youkuaiyun.com/ffzhihua/article/details/88844259 配置PHP-FPM # ...

秋天的博客 2999

锂电池的充电和放电曲线解读

锂电池充放电曲线是反映其性能的关键指标。充电曲线分为恒流和恒压两阶段:恒流阶段电压快速上升,恒压阶段电流逐渐降低;放电曲线则呈现平台期和快速衰减期特征。这些曲线受温度、充放电倍率及材料体系(如三元锂或磷酸铁锂)显著影响。通过分析曲线特征,可优化电池管理系统,实现精准的SOC估算、快充策略制定及故障诊断,从而在电池性能与安全性间取得平衡。不同应用场景(如新能源汽车或消费电子)对曲线形态有特定要求。

start_up_go的博客 5068

php-fpm 讲解

一、介绍: PHP-FPM 即 PHP FastCGI 进程管理器。 FastCGI 顾名思义,是 CGI 的升级版本,为了提升 CGI 的性能而生,CGI 针对每个 HTTP 请求都会 fork 一个新进程来进行处理(解析配置文件、初始化执行环境、处理请求),然后把这个进程处理完的结果通过 Web 服务器转发给用户,刚刚 fork 的新进程也随之退出,如果下次用户再请求动态资源,那么 Web 服务器又再次 fork 一个新进程,如此周而复始循环往复。 而 FastCGI 则会先 fork 一个 maste

flymore96的博客 7790

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

PHP-fpm

连接到来时(只有链接,不没有数据也会创建,telnet也会创建),创建新worker进程,worker进程数的创建收max_children设置限制,也受限于全局的process.max设置,如果空闲时间超过了process_idle_timeout的设置就会销毁worker进程,优点按流量需求创建,不浪费系统资源,缺点因为php-fpm是短连接的,如果每次请求都先建立连接,大流量场景下会使得master进程变得繁忙,浪费cpu,不适合大流量模式。PHP-FPM提供了更好的PHP进程管理方式,可以有。...

m0_66412572的博客 3814

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

php php-fpm,php php-fpm安装以及配置

centos 6.2 linux下安装php5.6.6源码PHP在 5.3.3 之后已经把php-fpm并入到php的核心代码中了。 所以php-fpm不需要单独的下载安装。要想php支持php-fpm,只需要在编译php源码的时候带上 --enable-fpm 就可以了一:yum安装php的依赖库yum install -y make cmake gcc gcc-c++ autoconf aut...

weixin_31102231的博客 1670

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

php中的fpm_PHP中的FPM是做什么的

FPM是FastCGI Process Manager的缩写,由全称我们可以知道其和FastCGI有关,就是一个FastCGI的进程管理器。对于FastCGI我们可以理解成一个协议,儿FPM是其在PHP中的一个实现。FPM的出现实现了PHP应用的分布式部署,这样使得PHP和web服务器可以在不同的机器上。当然与其说是FPM不如说是FastCGI的出现。最初FPM并没有被PHP的官方正式应用于PHP...

weixin_29103191的博客 1369

启动php-fpm

当编译安装好php之后, 我们需要启动php-fpm 移动php.ini的配置文件, 编译好php目录中是没有php.ini文件的 cp /opt/php7/php.ini-product /usr/local/php/etc/php.ini 假定php的源文件在 /opt 中 进入php的配置文件目录, 修改 php-fpm.conf.default cd ...

lxw1844912514的博客 1230

php fpm 有什么用,php-fpm有什么用

php-fpm是一个PHPFastCGI进程管理器,用于管理PHP进程池的软件,用于接受web服务器的请求。php-fpm提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。PHP-FPM(PHP FastCGI Process Manager)意:PHP FastCGI 进程管理器,用于管理PHP 进程池的软件,用于接受web服务器的请求。PHP-FPM提供了更好的P...

weixin_33443333的博客 346

Grafana+Prometheus+php-fpm-exporter监控PHP-FPM状态(五)

1. 启用php-fpm状态功能 php-fpm和nginx一样内建了一个状态页,对于想了解php-fpm的状态以及监控php-fpm非常有帮助。为了后续的Prometheus监控,我们需要先了解php-fpm状态页是怎么回事。 [global] pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/...

半僧 3408

php fpm在哪配置,php7的php-fpm.conf文件在哪里

php7下的php-fpm.conf文件一般是在php的安装目录下的etc目录中,文件路径为/usr/local/php-fpm/etc/php-fpm.conf。php-fpm.conf是php-fpm进程管理器的配置文件。php-fpm.conf是php-fpm进程管理器的配置文件。文件路径:/usr/local/php-fpm/etc/php-fpm.conf一般是在php的安装目录下的et...

weixin_39661780的博客 4087

php fpm 有什么用,详解PHP中PHP-FPM是什么?有什么用?

PHP-FPM(PHP FastCGI Process Manager)意:PHP FastCGI 进程管理器,用于管理PHP 进程池的软件,用于接受web服务器的请求。作用PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。 【相关推荐:PHP教程】(1). 为什么会出现php-fpmfpm的出现全部因为php-fastcgi出现。为了很好的管理php...

weixin_39827798的博客 476

php中的fpm_详解PHP中PHP-FPM是什么?有什么用?

PHP-FPM(PHP FastCGI Process Manager)意:PHP FastCGI 进程管理器,用于管理PHP 进程池的软件,用于接受web服务器的请求。作用PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。【相关推荐:PHP教程】(1). 为什么会出现php-fpmfpm的出现全部因为php-fastcgi出现。为了很好的管理php-f...

weixin_35651995的博客 1497

window安装php fpm,windows下能搭建php-fpm吗 phpstudy

这个Windows和Linux系统是不一样的,因为一般nginx搭配php需要php-fpm中间件,但是Windows下需要第三方编译.下载的包里有php-cgi.exe 但不是php-fpm如果想在windows上跑php-fpm 据说可以自己编译php-fpm 一般是nginx用的。apache没有用php-fpm的,用的是mod-php真特么费劲了,自己挨个安装用的是php-cgi.exe,...

weixin_33290540的博客 2795

php cli fpm区别,PHP中CGI、CLI、FPM是什么

嗯 被运维哥问了个问题: PHP 的 CLI 模式和 FPM 有什么区别和联系我:卧槽 我还真不知道 怎么忽悠他下呢!其实我对这个问题 也不甚很懂 一直都是这么用 没想过都是些啥玩意 然后搜索了好久 网上的答案真是众说纷纭 讲什么的都有 看的越来越晕最后终于发现一个大神写的一个回答 算我看过的讲的最赞的一个了 需要着重感谢下下面是自己整理的一些内容SAPI 是什么SAPI 全称 Server Ap...

weixin_36193690的博客 484

php fpm 重启命令,php-fpm怎么重新启动

php-fpm重新启动的方法:可以通过执行【kill -SIGUSR2 `cat /usr/local/php/var/run/php-fpm.pid`】命令来重启php-fpm。php 5.3.3 源码中已经内嵌了 php-fpm,不用象以前的php版本一样专门打补丁了,只需要在configure的时候添加编译参数即可。关于php-fpm的编译参数有 –enable-fpm –with-fpm-...

weixin_36403838的博客 3358
上一篇: git常用命令
下一篇: PDO获取数据的方法fetch()、fetchAll()、setFetchMode()、bindColumn()
Anglry
博客等级 码龄9年 10粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值