首页 > 编程语言 >PHP-FPM(FastCGI Process Manager)处理请求的流程

PHP-FPM(FastCGI Process Manager)处理请求的流程

时间:2024-05-12 11:57:25浏览次数:22  
标签:php 请求 FPM worker request Process Manager PHP

PHP-FPM(FastCGI Process Manager)处理请求的流程大致遵循以下步骤,其中您提到的几个关键函数和阶段是PHP-FPM生命周期中的重要组成部分。下面是对您提到步骤的解释及它们如何在PHP-FPM中执行的概述:

1. **php_module_startup**:
- 这个阶段发生在PHP-FPM服务启动时,而非每次请求处理时。`php_module_startup`函数负责初始化整个PHP环境,包括加载配置、初始化内核、注册内部函数和类、加载扩展等。它为处理后续的HTTP请求准备环境。

2. **fcgi_accept_request**:
- 当一个HTTP请求到达时,FastCGI协议层(在PHP-FPM中实现)会调用`fcgi_accept_request`来接收这个请求。这个步骤包括读取来自Web服务器(如Nginx或Apache)的FastCGI请求包,解析请求头和请求体。

3. **php_request_startup**:
- 接收到请求后,`php_request_startup`被调用,它初始化请求上下文,包括初始化全局变量、加载配置、启动错误处理等,为执行脚本做准备。

4. **fpm_request_executing**:
- 此阶段表示PHP-FPM正在分配或复用一个worker进程来执行请求。实际上,这一步骤涉及到FPM管理进程与worker进程之间的通信,确保请求被正确分配。

5. **php_execute_script**:
- 在worker进程中,`php_execute_script`函数被调用以执行实际的PHP脚本。这包括解析PHP代码、执行函数调用、处理变量和对象等。这是请求处理的核心部分。

6. **fpm_request_end**:
- 请求处理完毕后,`fpm_request_end`标记请求处理的结束,准备清理资源。这可能涉及清理局部变量、关闭打开的文件句柄等。

7. **php_request_shutdown**:
- `php_request_shutdown`被调用来执行请求结束时的清理工作,包括执行注册的shutdown函数、清理内存、关闭日志等。这标志着单个请求的生命周期结束。

8. **php_module_shutdown**:
- 当PHP-FPM服务被正常关闭时,`php_module_shutdown`会被调用,执行整个PHP环境的清理和资源释放。这包括卸载扩展、释放全局内存、关闭日志文件等。注意,这并非每次请求结束时执行,而是整个服务生命周期结束时的动作。

整个过程中,PHP-FPM通过master-worker模型管理多个worker进程,每个worker进程可以独立处理请求,提高了并发处理能力。上述步骤构成了PHP-FPM处理HTTP请求的标准流程。

标签:php,请求,FPM,worker,request,Process,Manager,PHP
From: https://www.cnblogs.com/maidongdong/p/18187646

相关文章

  • VMware vRealize Operations Manager 8.6.2 安装和配置
    早就垂涎vROPS很久了,本次正好做个安装记录,本地的虚拟化环境是VCSA6.7.0为啥选择vROPS8.6.2,因为他是最后一个支持VCSA6.7.0的版本https://interopmatrix.vmware.com/Interoperability?col=1427,9713,6377,6308,5694,5186,5101,4281&row=2,2736,2862,3222,3457,8393&isHidePatc......
  • nmcli NetworkManager 的命令行工具 它允许用户管理网络连接和网络设备
    1、列出所有连接nmcliconnectionshow2、启用/禁用网络连接nmcliconnectionup<ConnectionName>nmcliconnectiondown<ConnectionName>3、连接到一个Wi-Fi网络nmclidevicewificonnect<SSID>password<password>4、显示网络设备的状态nmclidevicestatus......
  • jmeter插件管理器安装-Plugins Manager
    有些函数是jmeter自带函数,有些函数是自定义的需要通过插件安装的,例如jmeter没有自带base64加密函数,若要使用该函数,可以通过插件安装自定义函数1.下载jmeter插件管理器:https://jmeter-plugins.org/wiki/PluginsManager/ 2.重启在jmeter,在“选项”下显示插件管理器"Plugins......
  • 查看PHP-FPM的内存占用、进程个数等信息
    查看每个PHP-FPM进程的内存占用(并排序):1ps-ylCphp-fpm--sort:rss这个命令会显示所有php-fpm进程的内存占用情况,并按内存占用大小进行排序。查看当前php-fpm总进程数:1ps-ylCphp-fpm--sort:rss|wc-l这个命令会列出php-fpm的所有进程,然后通过wc-l计算行数,从而得到......
  • 25 Prometheus和alertmanager高可用--Thanos
    一、prometheus高可用第一种方式1.准备3台centos服务器2.设置计算机名3.安装docker和docker-compose安装prometheus#2台安装prometheus服务mkdir/data/cd/data/gitclonehttps://gitee.com/linge365/docker-prometheus.gitcddocker-prometheusroot@os:/d......
  • openGauss CopyManager类简介
    CopyManager类简介CopyManager是openGaussJDBC驱动中提供的一个API接口类,用于批量向openGauss中导入数据。CopyManager的继承关系CopyManager类位于org.postgresql.copyPackage中,继承自java.lang.Object类,该类的声明如下:publicclassCopyManagerextendsObject构造方法......
  • 对于耗时比较长的程序,比如请求外部链接,为什么swoole比php-fpm并发好
    Swoole相比PHP-FPM在处理耗时较长的程序,如请求外部链接时表现出更高的并发能力,原因主要包括以下几点:1.**常驻内存**:Swoole是一个高性能的异步并发框架,它以扩展的形式运行在PHP中,能够将PHP程序常驻在内存中。这意味着Swoole的服务一旦启动,就会持续运行,不需要为每个请求创建和销毁......
  • 23 Alertmanager抑制、静默、路由、告警分组
    一、抑制机制Alertmanager的抑制机制可以避免当某种问题告警产生之后用户接收到大量由此问题导致的一系列的其它告警通知。例如当集群不可用时,用户可能只希望接收到一条告警,告诉他这时候集群出现了问题,而不是大量的如集群中的应用异常、中间件服务异常的告警通知。在Alertman......
  • JavaGUI - [03] LayoutManager布局管理器
    Component中有一个方法setBounds()可以设置当前容器的位置和大小,但如果我们手动为组件设置位置和大小的话,就会造成程序的不通用性。LayoutManager布局管理器可以根据运行平台来自动调整组件大小,程序员不用再手动设置组件的大小和位置,只需要为容器选择合适的布局管理器即可。 ......
  • 22.Prometheus告警之Alertmanager告警(二)-手机电话加短信告警
    4.4使用睿象云手机电话和短信报警瑞象云官网:https://www.aiops.com/有类似手机电话报警和短信报警的平台都可以 创建应用在点“集成”,然后找到“prometheus”点下面的“+”号填写应用名称,在点保持并获取key 分派策略1、点击“配置”---2、“分派策略”--......