‘壹’ 【php-fpm的安装】在安装过程中遵循教程,其中有一句“make all install”不知道怎么操作
编译安装三部曲:
./configure->make->make install
只有./configure是需要一大串指令的(设定你的参数配置),其他的直接输指令就可以。make完就直接make install
‘贰’ PHP-FPM详解
PHP-FPM是PHP FastCGI进程管理器,专为管理PHP进程池设计,用于接收web服务器请求。
第一部分,为什么出现PHP-FPM?PHP-FPM的诞生源自PHP-FastCGI的需求。为有效管理PHP-FastCGI而出现的程序。
第二部分,了解PHP-FastCGI。它只是一个解析PHP请求并返回结果的CGI程序,并不负责管理进程。
第三部分,为何不称为PHP-CGI?在PHP-FastCGI之前,存在PHP-CGI,但其执行效率低下,最终被PHP-FastCGI取代。
第四部分,解释FastCGI与CGI的区别。在FastCGI时代,当web服务器(如nginx)接收到请求并识别为动态PHP请求时,会将其转给PHP处理。在CGI模式下,每次请求时都需要读取php.ini配置,初始化执行环境,耗时且重复。
第五部分,FastCGI的效率提升。FastCGI允许一次启动一个主进程(master),读取一次配置,然后启动多个工作进程(worker)。当请求来临时,master将请求传递给worker,避免了重复的初始化工作。
第六部分,PHP-FPM的工作原理。PHP-FPM创建一个主进程来控制何时以及如何将HTTP请求转发给一个或多个子进程处理。主进程还负责管理进程的创建与销毁,以适应Web应用流量的变化。
安装部分,PHP在5.3.3之后将PHP-FPM整合到核心代码中,无需单独下载安装。只需在编译PHP源码时添加--enable-fpm即可启用PHP-FPM支持。
全局配置方面,CentOS中PHP-FPM的主配置文件为/etc/php7/php-fpm.conf,配置内容通常包括进程池定义。
在CentOS中,PHP-FPM主配置文件顶部引入了进程池定义文件,通常使用www.conf作为默认配置文件。进行必要的编辑保存后,重启PHP-FPM主进程。
PHP-FPM进程池的详细配置请参考php.net/manual/install文档。
针对Company开发环境的配置,提供测试环境与生产环境的具体配置示例。以nginx为例,说明如何转发请求给PHP-FPM。
最后,针对PHPer进阶时遇到的问题,提供了一系列资料,涵盖分布式架构、高可扩展性、高性能、高并发、服务器性能调优、TP6、Laravel、YII2、Redis、Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等高级进阶干货,需要的读者可以免费获取。
‘叁’ 说说php-fpm配置解析
PHP-FPM配置解析
在编译安装PHP时,通过在./configure中添加参数`--enable-fpm`即可开启PHP-FPM。配置文件为`php-fpm.conf`,其语法类似`php.ini`。默认位置为`/usr/local/php/etc/php-fpm.conf`,若未在此处,可能位于`/usr/local/php/etc/php-fpm.d/`目录下。
全局配置包含PID文件路径、错误日志位置及错误级别设置。
进程池配置允许定义多个进程池,通过设置监听地址与端口来接受FastCGI请求。推荐使用Unix域Socket,如配置`listen/tmp/php-cgi.sock`以提高性能,适合高并发场景,尽管在不稳定时可设置`backlog`以管理连接队列。
`listen.allowed_clients`允许访问FastCGI进程的IP白名单,设置为`any`则不限制IP访问。
进程管理器设置包括`pm`参数选择静态、动态或按需管理子进程数量,`pm.max_children`和`pm.start_servers`定义进程最大数量与起始数量,确保稳定性与资源利用。
内存管理考虑:对于大内存服务器(8G以上),建议使用静态设置以提升效率。而小内存服务器(如1G)则有利于系统稳定,合理分配资源。
`request_terminate_timeout`与`request_slowlog_timeout`分别设置最大执行时间与慢请求记录,有助于调试与优化。
慢日志功能通过设置`request_slowlog_timeout`来记录超过指定时间的请求,包括进程号、脚本名称、执行时间等详细信息,帮助排查问题。
配置修改后,执行`sudo systemctl restart php-fpm`以使更改生效。
希望以上内容能帮助您理解并应用PHP-FPM配置,更多学习资源可关注公众号:PHP开源社区,或访问我们整理的精华文章合集,覆盖框架、微服务、分布式、高并发与数据库等PHP技术领域。