jsiwa / sql

0 stars 0 forks source link

PHP #10

Open jsiwa opened 4 months ago

jsiwa commented 4 months ago

PHP-FPM (PHP FastCGI Process Manager) 是一个为 PHP 应用程序处理 FastCGI 请求的替代实现。它特别适用于高负载的服务器环境,提供了一些额外的功能和增强特性,能够更好地管理和优化 PHP 进程的处理性能。

PHP-FPM 的核心功能

  1. 进程管理

    • PHP-FPM 可以管理多个 PHP 工作进程。通过预定义的子进程池,能够根据需求动态调整进程数量,确保服务器在高负载时能快速响应,同时在低负载时节省资源。
  2. 动态进程管理

    • PHP-FPM 支持动态进程管理,可以根据负载情况自动调整进程数量。这种动态扩展和收缩的能力提高了服务器的效率和响应速度。
  3. 慢请求日志

    • PHP-FPM 提供慢请求日志功能,可以记录执行时间过长的 PHP 请求,帮助开发人员排查性能瓶颈。
  4. 进程平滑重载

    • 允许在不中断服务的情况下重新加载 PHP 配置。这在更新配置或应用时非常有用,确保服务的持续可用性。
  5. 状态监控

    • PHP-FPM 提供了状态页面,能够实时监控进程池的状态,包括请求数、并发连接数等信息,帮助管理员更好地了解服务器运行情况。

配置 PHP-FPM

PHP-FPM 的配置文件通常位于 /usr/local/etc/php-fpm.conf/etc/php/7.4/fpm/php-fpm.conf,根据安装方式和 PHP 版本的不同可能有所不同。以下是一个典型的 PHP-FPM 配置示例:

全局配置文件(php-fpm.conf)

[global]
pid = /run/php/php-fpm.pid
error_log = /var/log/php-fpm/error.log
include=/etc/php/7.4/fpm/pool.d/*.conf

子进程池配置文件(www.conf)

[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s

php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on

配置说明

  1. 全局配置文件

    • pid:指定 PHP-FPM 进程的 PID 文件路径。
    • error_log:指定 PHP-FPM 错误日志文件路径。
    • include:包含子进程池配置文件的路径。
  2. 子进程池配置文件

    • [www]:定义一个子进程池,名称为 www
    • usergroup:运行 PHP-FPM 进程的用户和组。
    • listen:监听地址和端口,用于接收 FastCGI 请求。
    • pm:进程管理模式,dynamic 表示动态管理进程数量。
    • pm.max_children:最大子进程数量。
    • pm.start_servers:启动时创建的子进程数量。
    • pm.min_spare_serverspm.max_spare_servers:最小和最大空闲子进程数量。
    • slowlog:慢请求日志文件路径。
    • request_slowlog_timeout:慢请求日志记录的超时时间。
    • php_admin_valuephp_admin_flag:设置 PHP 配置选项。

启动和管理 PHP-FPM

在 macOS 上,如果通过 Homebrew 安装 PHP-FPM,可以使用以下命令启动、停止和重启服务:

# 启动 PHP-FPM
brew services start php

# 停止 PHP-FPM
brew services stop php

# 重启 PHP-FPM
brew services restart php

通过这些命令,可以方便地管理 PHP-FPM 服务。在其他操作系统上,如 Linux,管理命令可能有所不同,取决于具体的发行版和安装方式。

监控 PHP-FPM 状态

PHP-FPM 提供了一个状态页面,允许管理员监控其运行状态。通常可以通过配置 www.conf 文件中的 pm.status_path 参数来启用状态页面:

pm.status_path = /status

启用后,可以通过访问 http://your-server/status 来查看 PHP-FPM 的运行状态。

总结

PHP-FPM 是 PHP 在高负载环境下的重要组件,通过提供高效的进程管理、动态调整、慢请求日志、进程平滑重载等功能,能够显著提高 PHP 应用的性能和可维护性。正确配置和管理 PHP-FPM,可以确保你的 PHP 应用在高负载下也能稳定运行。

jsiwa commented 4 months ago

如果需要 php@7.4,使用 shivammathur/php tap 安装:

brew tap shivammathur/php
brew install shivammathur/php/php@7.4
brew link --force --overwrite php@7.4
jsiwa commented 4 months ago

检查 PHP-FPM 配置文件:

/usr/local/opt/php@7.4/sbin/php-fpm -t
jsiwa commented 4 months ago

重新启动 PHP-FPM 服务:

brew services restart php@7.4