php配置php-fpm启动参数及配置详解

PHP配置php-fpm启动参数及配置详解

php-fpm是什么?

PHP-FPM(FastCGI Process Manager for PHP)是 PHP 官方针对 FastCGI 协议的 PHP 处理程序管理器,是基于 FastCGI 的进程管理器,可以独立于 Web 服务器(如 nginxapache)运行。PHP-FPM 可以更好的管理 PHP 请求,提高服务器处理并发能力,是 PHP 处理程序的重要选择。

php-fpm常见配置项解析

pool配置参数

php-fpm 可以配置多个 pool,每个 pool 都有自己的配置,以下是常见的配置项:

  • listen:监听地址(默认 ip:port 或者是 socket 形式)
  • listen.allowed_clients:允许访问的 IP 地址白名单
  • user:执行进程的用户
  • group:执行进程的用户组
  • pm:php-fpm 管理工作进程的方式

以下是 pm 值的不同取值:

  • dynamic:动态管理,由 pm.max_children、pm.start_servers 等参数控制
  • ondemand:按需管理,由 pm.process_idle_timeout、pm.max_requests 等参数控制
  • static:静态,由 pm.max_children 单独控制

其他相关配置:

  • pm.max_children:子进程的最大数量
  • pm.start_servers:在启动时,通常 pm.min_spare_servers 子进程被创建,并且一直运行到有空闲池中的空间为止(默认值:5),用于动态模式。
  • pm.min_spare_servers:保证有空闲进程可用于立即处理请求,防止启动子进程时等待较长时间(默认值:2),用于动态模式。
  • pm.max_spare_servers:保证有空闲进程可用于立即处理请求,但是限制最多可以创建多少个进程(默认值:8),用于动态模式。
  • pm.process_idle_timeout:在 static 和 ondemand 模式下使用,控制终止空闲进程的时间(默认值:10s)
  • pm.max_requests:每个子进程相对应的请求数,达到该值会杀掉该子进程,然后由管理进程创建一个新的子进程(默认值:0,表示不限制)

全局配置参数

php-fpm 运行在特定用户权限下,这个用户需要具备执行 PHP 脚本的权限,在环境变量和进程切换时进行 ,可以对全局配置进行调整,例如:

  • pid:进程文件存放路径(默认值:/run/php-fpm/php-fpm.pid)
  • error_log:错误日志输出路径
  • syslog.facility:通过 syslog 输出的日志的 facility(默认是 daemon)
  • syslog.ident:syslog 标识符(默认是 php-fpm 开头)

更多配置项

在 php.ini 文件中可以设置许多 PHP 程序运行的详细配置项,可以对与实现 PHP 的 Web 服务器进行修改,例如:

  • memory_limit:控制 PHP 程序使用内存的上限
  • post_max_size:POST 数据的最大值
  • upload_max_filesize:上传文件的最大值
  • max_execution_time:单个 PHP 页面的超时时间

示例1:创建一个名为 test 的 PHP pool

以下为示例配置:

[test]
listen=/run/php-fpm/test.sock
user=webuser
group=webusergroup
pm=dynamic
pm.max_children=50
pm.start_servers=5
pm.min_spare_servers=2
pm.max_spare_servers=8
pm.process_idle_timeout=10s
pm.max_requests=0
  • 将该文件保存为 /etc/php-fpm.d/test.conf
  • 确保监听地址处于 listen.allowed_clients 白名单范围内。
  • 重启 PHP-FPM 进程。

示例说明:

该示例中我们创建了一个名为 test 的 PHP pool 并定义了以下参数:

  • 用 socket 形式监听的地址:/run/php-fpm/test.sock
  • 运行 PHP 代码的操作系统用户为 webuser,操作系统组为 webusergroup
  • 使用动态管理方式,最多有 50 个子进程,启动时创建 5 个子进程。
  • 最少保证至少有 2 个空闲进程可用于处理请求,并限制最大空闲进程数量为 8 个。
  • 在 10 秒内没有请求时,杀死空闲进程,可用于 ondemand 模式。
  • 不限制子进程请求数量(0)。

示例2:修改 upload_max_filesize 配置

php.ini 文件中修改以下变量:

upload_max_filesize=20M

示例说明:

该示例中我们将 upload_max_filesize 的值更改为 20M。这表示客户端上传到 Web 服务器的文件大小不能超过 20MB。

结语

以上就是关于 PHP 配置 php-fpm 启动参数及配置详解的攻略。PHP-FPM 是我们优化 PHP 性能的一个重要手段,掌握了这些配置项的含义和使用,可以帮助我们更高效、更稳定地运行 PHP 应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php配置php-fpm启动参数及配置详解 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • php获取文件名称和扩展名的方法

    当我们在PHP中处理文件时,经常需要获取文件的名称和扩展名,以便进行相应的处理。下面是获取文件名称和扩展名的几种常见的方式: 获取文件名称 使用basename函数获取文件名 basename函数可以返回一个文件路径的文件名,例如: $path = "/var/www/html/test/hello.php"; $filename = b…

    PHP 2023年5月26日
    00
  • Linux Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点

    下面是详细讲解“Linux Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点”的完整攻略。 什么是Linux Shell+Curl网站健康状态检查脚本? Linux Shell+Curl网站健康状态检查脚本是一种可以通过命令行方式自动检查网站状态的脚本。它是基于Linux Shell和Curl命令实现的,可以快速地对一个或多个网站进行健康状…

    PHP 2023年5月27日
    00
  • php开启多进程的方法

    下面我将详细讲解PHP开启多进程的方法,并给出两个实际示例。 PHP开启多进程的方法 PHP单进程的性能有限,为了更高效地处理大量请求,可以使用多进程来提高效率。下面是PHP开启多进程的方法: 1. 使用pcntl_fork函数 使用pcntl_fork函数可以创建子进程,并在子进程中执行指定的程序,从而实现多进程运行。 $pid = pcntl_fork(…

    PHP 2023年5月23日
    00
  • 解决PHP超大文件下载,断点续传下载的方法详解

    解决PHP超大文件下载,断点续传下载的方法详解 问题 在网站开发中,经常需要下载一些较大的文件,比如视频、音频、PDF等。但这些文件往往都很大,如果采用普通的下载方式,可能会因为网络不稳定或者其他原因导致下载失败。为了解决这个问题,我们需要实现断点续传下载,以确保下载成功率。 方法 为了实现断点续传下载,我们需要在服务器端和客户端都进行相应的处理。 服务器端…

    PHP 2023年5月26日
    00
  • PHP如何通过表单直接提交大文件详解

    当我们需要上传大文件时,常常会遇到上传失败,上传慢等问题,这时我们就可以通过表单直接提交大文件的方式来解决。 以下是PHP通过表单直接提交大文件的详细攻略: 修改php.ini配置文件 在服务器上找到php.ini文件,然后找到以下几个参数并修改: upload_max_filesize = 64M post_max_size = 64M max_execu…

    PHP 2023年5月26日
    00
  • 深入php中var_dump方法的使用详解

    深入PHP中var_dump方法的使用详解 什么是var_dump方法? var_dump是PHP中一种用于调试的方法,它能够将一个变量或表达式的结构信息以及值打印出来,是PHP程序调试中必不可少的工具。 var_dump的基本用法 var_dump方法接收一个或多个参数,每个参数都可以是一个任意类型的PHP变量(包括整数、浮点数、字符串、数组、对象、资源、…

    PHP 2023年5月26日
    00
  • 微信小程序实战之登录页面制作(5)

    下面是详细的攻略: 微信小程序实战之登录页面制作(5) 1. 登录验证和获取用户信息 首先,在 login.js 文件中,我们需要编写登录验证和获取用户信息的代码。具体步骤如下: 定义全局变量 app,用于保存小程序的实例 在 onLoad 函数中,获取小程序的实例,并将其保存到全局变量 app 中 在 getUserInfo 函数中,调用 wx.getUs…

    PHP 2023年5月23日
    00
  • PHP判断数组是否为空的常用方法(五种方法)

    PHP中,判断数组是否为空是一个常见的操作,下面介绍五种常用方法: 一、使用empty()函数 empty()函数可以用来判断一个变量是否为空,也可以用来判断一个数组是否为空。 示例一: $arr = []; if (empty($arr)) { echo ‘数组为空’; } else { echo ‘数组不为空’; } 输出结果: 数组为空 示例二: $a…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部