百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

PHP-FPM 学习记录(php fpm cli)

off999 2025-04-08 17:34 21 浏览 0 评论

什么是FastCGI

请阅读FastCGI(Fast Common Gateway Interface)的理解

这里不再赘述

什么是(PHP-FPM)

  1. PHP5.4之前只是用来管理php-cgi进程的进程管理器,实现了fastCGI协议的程序
  2. PHP官方从PHP5.4版本将PHP-FPM集成到了PHP官方发布的包中,这时PHP-FPM同时具备进程管理器及PHP解释器的能力,直接把php解释器的功能集成进PHP-FPM了

PHP-FPM具备哪些功能

  • 支持平滑停止/启动的高级进程管理功能

PHP-FPM进程是由一个master进程和多个work进程配合工作。master进程主要管理事件信号接受和分发。所有的请求都是由work进程处理并将处理结果返回。

master接收到重启或重载配置文件的信号后,会通知所有的work进程不再接收新的请求。master会另起新的work进程来处理新的请求。然后会通知旧的work进程处理完成正在进行的工作后退出,运用此原理实现平滑停止和启动

  • 可以工作于不同的uid/gid/chroot环境下,并监听不同的端口和使用不同的php.ini配置文件(可取代safe_mode的设置)

gid为groupid,即组id,用来标识用户组的唯一标识符;uid为userid,即用户id,用来标识每个用户的唯一标示符。用户组:将同一类用户设置为同一组,如可将所有的系统管理员设置为admin组,便于分配权限,将某些重要的文件设置为所有admin组用户可以读写,这样可以进行权限分配,每个用户有一个唯一的用户id,每个用户组都有唯一的组id。charoot为change root,就是改变程序执行时所参考的根目录位置,可以增进系统的安全性,限制使用者能做的事。safe_mode是一种安全模式。

  • stdout 和 stderr 日志记录

标准输出和标准错误日志记录

  • OPcode被意外破坏时紧急重启
  • 文件上传优化支持
  • 支持慢日志记录
  • FastCGI 的增强功能

例如 fastcgi_finish_request() - 一个特殊的函数来完成请求并刷新所有数据,同时继续做一些耗时的事情(视频转换、统计处理等)

PHP-FPM配置说明

1、php-fpm.conf全局配置说明

pid:需要配置一个文件路径,用来存储master的进程id;示例:

pid = /etc/php-fpm.pid

error_log:错误日志的存储位置。默认:#INSTALL_PREFIX#/log/php-fpm.log。 如果设置为 "syslog",日志将不会写入本地文件,而是发送到 syslogd。示例:

error_log = /var/log/php-fpm/error.log

log_level:错误级别。可用级别为:alert(必须立即处理),error(错误情况),warning(警告情况),notice(一般重要信息),debug(调试信息)。默认:notice。示例:

log_level = notice

syslog.facility:设置何种程序记录消息,默认值:daemon,记录linux系统日志。示例:

syslog.facility = daemon

syslog.ident:为每条信息添加前缀。 如果在同一台服务器上运行了多个 FPM 实例,可以修改此默认值来满足需求。默认值:php-fpm。示例:

syslog.ident = php-fpm

log_limit:设置日志文件单行字符数上限。如果超出此方向,会进行换行处理。默认是1024字节

log_limit = 4096

log_buffering:日志是否记录缓冲区。默认值true,如果设置为no,会直接写入日志文件

log_buffering = no


emergency_restart_threshold
(int):如果子进程在
emergency_restart_interval 设定的时间内收到该参数设定次数的 SIGSEGV 或者 SIGBUS退出信息号,则FPM会重新启动。0 表示“关闭该功能”。默认值:0(关闭)。示例:

emergency_restart_threshold = 100


emergency_restart_interval(
mixd):用于设定平滑重启的间隔时间。这么做有助于解决加速器中共享内存的使用问题。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭)。示例:

emergency_restart_interval = 60s

process_control_timeout(mixd):设置子进程接受主进程复用信号的超时时间。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭)。即reload的时候,如果有正在执行的请求进程便会等待该进程设置的时长。而其他进程直接就结束掉。等待正在执行的进程执行完或者是超过了设置的时间后fpm的master进程才开始生成新的fpm worker进程.示例:

process_control_timeout = 60s

process.max(int):Fork 的最大 FPM work进程数。使用动态管理进程数量时,此设计可以控制在一个进程池内的全局进程数量,pm=dynamic模式下生效。 使用需谨慎。默认值:0,为不限制。示例:

process.max = 128

process.priority (int):

指定要应用于主进程的nice(2)优先级(仅在设置时)该值可以在-19(最高优先级)到20(最低优先级)之间变化,示例:

process.priority = -19

注意:只有当FPM主进程以root用户身份启动时,它才会工作-除非另有规定,否则池进程将继承主进程优先级

daemonize (bool):设置 FPM 在后台运行。设置“no”将 FPM 保持在前台运行用于调试。默认值:yes。示例:

daemonize = no

注意:如果是通过dockerfile来启动php-fpm服务,这个就需要设置为no,否则php-fpm无法通过启动容器 同时启动(已踩过此坑)

rlimit_files (int):设置 master 进程打开文件描述符的 rlimit 数量,可使用 ulimit -n 查看。默认为系统默认值。示例:

rlimit_files = 1024

rlimit_core :设置核心rlimit最大限制值. 可用值: ‘unlimited’ 、0或者正整数. 默认值: 系统定义值,示例:

rlimit_core = 0

events.mechanism (string):设置 FPM 使用的事件机制。 可用以下选项:select、

pool、epoll、kqueue (*BSD)、port (Solaris)。 默认值:不设置(自动检测)。示例:

events.mechanism = epoll

systemd_interval (int):使用 systemd 集成的 FPM 时,设置间歇秒数,报告健在通知给 systemd。 设置为 0 表示禁用。默认值:10.示例:

systemd_interval = 10

2、运行配置

prefix (string):检测路径时使用的前缀。示例:

prefix = /path/to/pools/$pool

user (string):FPM 进程运行的Unix用户。必须设置。示例:

user = apache

group (string):FPM 进程运行的 Unix 用户组。如果不设置,就使用默认用户的用户组,示例:

group = apache

listen (string):设置接受 FastCGI 请求的地址。可用格式为:'ip:port','port','/path/to/unix/socket'。每个进程池都需要设置。示例:

listen = [::]:9000

注意:当web server 与应用服不是同一台(或不是同一个容器时)时,这里不能设置为127.0.0.1:9000,这样时不通的,(已踩坑)

listen.backlog (int):设置 listen(2) 的 backlog 最大值。“-1”表示无限制。默认值(php7.4):511。示例:

listen.backlog = 511

listen.allowed_clients (string):设置允许连接到 FastCGI 的服务器 IPV4 地址。等同于 PHP FastCGI (5.2.2+) 中的 FCGI_WEB_SERVER_ADDRS 环境变量。仅对 TCP 监听起作用。每个地址是用逗号分隔的,如果没有设置或者为空,则允许任何服务器请求连接。默认值:any。 PHP 5.5.20 和 5.6.4起,开始支持 IPv6 地址。示例:

listen.allowed_clients = 127.0.0.1,192.168.2.25


listen.owner/listen.group/listen.mode
(string):如果使用了 Unix 套接字,表示它的权限。在 Linux 中必须设置读/写权限,以便用于 WEB 服务器连接。 在很多 BSD 派生的系统中可以忽略权限允许自由连接。 默认值:运行所使用的用户和组,权限为 0660。示例:

listen.owner = user
listen.group = usergroup
listen.mode = 0660

listen.acl_users (string):当系统支持 POSIX ACL(Access Control Lists)时,可以设置使用此选项。 当设置了的时候,将会忽略 listen.owner 和 listen.group。 值是逗号分割的用户名列表。 PHP 5.6.5 起可用。示例:

listen.acl_users = apache,nginx

listen.acl_groups (string):作用和listen.acl_users同理,值是逗号分割的用户组名称列表。 PHP 5.6.5 起可用。

listen.acl_groups =apache,nginx

pm (string):设置进程管理器如何管理子进程。可用值:static,ondemand,dynamic。必须设置。static - 子进程的数量是固定的(通过pm.max_children)。ondemand - 进程在有需求时才产生(当请求时才启动。与 dynamic 相反,在服务启动时 pm.start_servers 就启动了。dynamic - 子进程的数量在下面配置的基础上动态设置:pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers。示例:

pm = dynamic

pm.max_children (int):pm 设置为 static 时表示创建的子进程的数量,pm 设置为 dynamic 时表示最大可创建的子进程的数量。必须设置。示例:

pm.max_children = 30

pm.start_servers (int):设置启动时创建的子进程数目。仅在 pm 设置为 dynamic 时使用。默认值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2。示例:

pm.start_servers = 5

pm.min_spare_servers (int):设置空闲服务进程的最低数目。仅在 pm 设置为 dynamic 时使用。必须设置,示例:

pm.min_spare_servers = 5

pm.max_spare_servers (int):设置空闲服务进程的最大数目。仅在 pm 设置为 dynamic 时使用。必须设置,示例:

pm.max_spare_servers = 30

pm.process_idle_timeout (mixd):秒数,多久之后结束空闲进程。 仅当设置 pm 为 ondemand。 可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:10s。示例:

pm.process_idle_timeout = 10s

pm.max_requests (int):设置每个子进程在处理了多少个请求数量之后就重启。如果设置为 '0' 则一直接受请求,不重启,等同于 PHP_FCGI_MAX_REQUESTS 环境变量。默认值:0。示例:

pm.max_requests = 300


pm.status_path (string):FPM 状态页面的网址。如果没有设置,则无法访问状态页面,默认值:无。示例:

pm.status_path = /fpmStatus

效果:



ping.path (string):FPM 监控页面的 ping 网址。如果没有设置,则无法访问 ping 页面。该页面用于外部检测 FPM 是否存活并且可以响应请求。请注意必须以斜线开头(/);示例:

ping.path = /fpm_ping

效果:


ping.response (string):用于定义 ping 请求的响应返回内容。返回为 HTTP 200 的 text/plain 格式文本。默认值:pong。示例:

ping.response = 200

效果:


process.priority (int):设置 worker 的 nice(2)优先级(如果设置了的话)。 该值从 -19(最高优先级) 到 20(更低优先级)。 默认值:不设置。示例:

process.priority = -19

access.log (string):Access log 文件。 默认值:不设置

access.log = /var/logs/php-fpm.access.log

access.format (string):access log 的格式。 默认值: "%R - %u %t \"%m %r\" %s",示例:

access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"

slowlog (srting):慢日志文件及路径,示例:

slowlog = /var/log/php-fpm/www-slow.log

request_slowlog_timeout (mixed):记录慢日志的请求时间阀值,当一个请求处理时间超出该配置后,会记录到slowlog中。设置为 '0' 表示 'Off'。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭)。

request_slowlog_timeout = 3s

request_terminate_timeout (mixd):设置单个请求的超时中止时间。该选项可能会对 php.ini 设置中的 'max_execution_time' 因为某些特殊原因没有中止运行的脚本有用。设置为 '0' 表示 'Off'。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭)。示例:

request_terminate_timeout = 10s

chroot (string):启动时的 Chroot 目录。所定义的目录需要是绝对路径。如果没有设置,则 chroot 不被使用。示例:

chroot = /dir

chdir (string):设置启动目录,启动时会自动 Chdir 到该目录。所定义的目录需要是绝对路径。默认值:当前目录,或者根目录(chroot时)。示例:

chdir = /var/www

catch_workers_output (boolean):重定向运行过程中的 stdout 和 stderr 到主要的错误日志文件中。如果没有设置,stdout 和 stderr 将会根据 FastCGI 的规则被重定向到 /dev/null。默认值:无。示例:

catch_workers_output = yes

clear_env (boolean):为 FPM worker 进程清除环境变量。 在进程池配置文件里设置环境变量前,阻止任意系统的环境变量进入 FPM worker 进程。 自 PHP 5.4.27、 5.5.11 和 5.6.0 起。 默认值: Yes,示例:

clear_env = yes

security.limit_extensions (string):限制 FPM 允许解析的脚本扩展名。 此设置可以预防 web 服务器配置的错误。 应当限制 FPM 仅仅解析 .php 扩展名,阻止恶意用户使用其他扩展名运行 php 代码。 默认值: .php .phar,示例:

security.limit_extensions = .php

相关推荐

电脑热点怎么禁止别人连接(怎么让电脑的热点不被关闭)

方法/步骤1/7首先,在我们的屏幕上找到“设置”。2/7点击进入设置之后,正数第三位就是个人热点。3/7在个人热点中,我们可以设置热点密码,开启关闭热点。4/7排名第三的是连接管理,可以设置允许一个至...

常用浏览器有哪些

电脑常用浏览器好用的方法步骤1从用户体验和功能扩展性来看,Chrome是最好用的浏览器。2Chrome拥有快速的页面加载速度、优秀的标签页管理和内置的开发者工具等功能,还有不断更新的扩展程序,能够...

u盘怎么取消读写保护(优盘怎么去掉读写保护)

如果您的U盘启动了读写保护,那么就无法进行数据的读取和写入操作。以下是一些可能的解决方法:1.检查开关或按钮:一些U盘有物理开关或按钮,用于启用或禁用读写保护。您可以检查一下U盘上是否有这样的开关或...

打印机脱机无法打印怎么办(打印机脱机无法打印故障处理)
打印机脱机无法打印怎么办(打印机脱机无法打印故障处理)

打印机脱机无法打印怎么办?在使用打印机的过程中,经常会遇到打印机无法打印的问题,如果你的打印机已经正常使用了一段时间,而是现在打印机无法打印了,那么很可能是你的打印机脱机了。我们该怎么办呢?首先我们拿到打印机,要把它的电源线,USB打印线与...

2025-11-12 03:51 off999

台式电脑可以连接wifi吗(台式电脑没有连接wifi选项怎么办)
  • 台式电脑可以连接wifi吗(台式电脑没有连接wifi选项怎么办)
  • 台式电脑可以连接wifi吗(台式电脑没有连接wifi选项怎么办)
  • 台式电脑可以连接wifi吗(台式电脑没有连接wifi选项怎么办)
  • 台式电脑可以连接wifi吗(台式电脑没有连接wifi选项怎么办)
激活码怎么激活(激活码怎么激活steam)

首先,启动电脑,在键盘按下“Win+R”,然后“运行”程序。然后,在“运行”的对话框输入“regedit”,回车确定输入命令然后,在窗口的左侧菜单选择“HKEY_LOCAL_MACHINE\SOFTW...

pscs6安装教程序列号(ps安装序列号cs6破解)
  • pscs6安装教程序列号(ps安装序列号cs6破解)
  • pscs6安装教程序列号(ps安装序列号cs6破解)
  • pscs6安装教程序列号(ps安装序列号cs6破解)
  • pscs6安装教程序列号(ps安装序列号cs6破解)
电脑动不动就卡住不动怎么回事

可能出现卡死原因:1、病毒引起,使你的电脑检测通过的程序太多,CPU主频性能不能充分发挥出来。2、温度过高,散热不好,使CPU性能下降。3、内存条太小,内存缺陷。5、可能设置了开机后自动登陆太多,自动...

笔记本风扇声音大怎么办(笔记本风扇声音非常大)

1.清理笔记本风扇灰尘一般而言,新买来的风扇总是噪声较小,而使用一段时间后会明显变大。其实,灰尘是造成风扇噪音上升的重要原因之一,因为无孔不入的灰尘总能钻进不完全密闭的机箱。当CPU风扇高速旋转时,漩...

如何添加无线网络打印机(如何添加无线网络打印机连接)

  要添加网络打印机,您可以按照以下步骤进行操作:1.确保网络设置:首先,请确保您的计算机和打印机都已连接到同一个局域网或无线网络中,并且网络连接正常。确保您已经知道网络打印...

戴尔电脑一键重装系统(戴尔怎么一键重装系统)

若您需要重装戴尔系统,可以按照以下步骤进行操作:首先备份重要数据,然后获取系统安装介质,可以是光盘或USB驱动器。接下来,进入BIOS设置,将启动顺序调整为从安装介质启动。重启电脑后,按照屏幕提示进行...

电脑ip地址配置异常怎么修复

如果您发现IP地址配置异常,可以按照以下步骤尝试解决:1.检查网络连接:首先检查计算机、路由器或交换机等设备的网线、电源和连接状态是否正常,并确保网络设备正确连接。2.确认IP地址:检查您的计算机...

怎么把win7电脑恢复出厂设置

1.首先我们打开电脑找到“计算机”点击打开。2.进入页面然后我们点击“Windows7(C:)”打开C盘。3.我们在C盘界面找到Windows7并点击打开。4.进入到Win7文件夹中找到并双击“Sys...

ctrl c 和 ctrl v 怎么按(一键复制粘贴)

左手小指按Ctrl键,食指按C键或者V键具体在按Ctrl+C的时候,无名指放在Z键上,中指放在X键上,食指按C键如果你也用这种方式的话,可能和我一样,第一次按的时候不习惯手指这样去分工的感觉,但是你...

u盘格式转换为fat32(U盘格式转换为FAT32)
  • u盘格式转换为fat32(U盘格式转换为FAT32)
  • u盘格式转换为fat32(U盘格式转换为FAT32)
  • u盘格式转换为fat32(U盘格式转换为FAT32)
  • u盘格式转换为fat32(U盘格式转换为FAT32)

取消回复欢迎 发表评论: