当前位置: 首页 > 后端技术 > PHP

了解PHP-FPM

时间:2023-03-30 01:21:56 PHP

在服务器上。我们看php进程,都是php-fpm进程。大家都知道这是php的运行环境。那么,它是什么?PHP-FPM简介PHP-FPM是PHP的FastCGI管理器。它用于替代PHPFastCGI的大部分附加功能。PHP5.3.3之后,成为PHP的标准配置。有朋友要问,FastCGI是什么鬼?CGI程序也称为“CommonGatewayInterface”,它是一种允许Web服务器与你的应用程序进行交互的接口。就像nginx中需要配置的fastcgi_pass一样,我们一般使用127.0.0.1:9000或者unix:/tmp/php-cgi.sock来配置这个参数。它的意思是告诉nginx传入的请求由端口tcp:9000上的侦听器或unix/socket处理。他们都指向PHPrunner。更简单的说,我们使用phpaaa.php来运行php脚本。php-fpm相当于这个php命令。Nginx使用fastcgi_pass运行php$nginx_root下的index.php(nginx配置文件中网站根目录的root配置)。所以,如果你使用的是python或任何其他语言,你可以使用他们的cgi程序来调用nginx。FastCGI和CGI??有什么区别?FastCGI启动套接字接口。服务端应用不需要自己运行php,只需要向这个socket接口提交请求即可。php-fpm需要在编译php的时候加上--enable-fpm。一些通用的集成安装包如lnmp、phpStudy等都会默认编译使用php-fpm,毕竟是标准的。tcpsocket和unixsocket上面说了nginx可以使用127.0.0.1:9000和unix:/tmp/php-cgi.sock来调用php-fpm。有什么不同?前者,一般端口号为9000,是tcp形式的调用。即php-fpm启动一个监听进程监听9000端口,会调用一个tcp/ip服务。nginx调用时,会经过一个tcp请求过程,即3次握手,4次挥手,会走到七层网络的第四层传输层。相对来说,这种方法的性能会稍差一些。启动php-fpm后,使用nestat查看端口,会出现9000端口占用情况。后者使用Unixsocket套接字服务,通过sock文件交换信息,性能相对较好,因为没有tcp连接过程,不占用9000端口。对于高负载高流量的网站,推荐使用unix方法。对于普通的小网站,用哪一种都无所谓,但tcp方式更容易配置和理解。也是php-fpm.conf中默认的监控方式。php-fpm.conf配置中的listen属性用于配置监听。这里的配置要和nginx中的一致。使用tcp时监听127.0.0.1:9000,使用unix时设置为/tmp/php-cgi-56.sock。PHP-FPM的功能以下内容摘自官方文档:支持平滑停止/启动的高级进程管理功能,可以工作在不同的uid/gid/chroot环境下,监听不同的端口,使用不同的php.ini配置文件(可以替换safe_mode设置)stdout和stderr日志记录可以重启并缓存损坏的opcode文件上传优化支持“慢日志”——记录脚本(不仅记录文件名,还记录PHPbacktrace信息,可以使用ptrace或类似工具读取并分析远程进程的运行数据)运行异常缓慢;fastcgi_finish_request()-特殊功能:用于在请求完成并刷新数据后继续在后台执行耗时工作(录制视频转换,统计处理等)动态/静态子流程生成基本SAPI运行基于php.ini配置文件的状态信息(类似于Apache的mod_status)。本文参考:https://www.php.net/manual/zh/install.fpm。phphttps://www.cnblogs.com/sunlong88/p/9001184.htmlhttps://www.jianshu.com/p/34a20e8dbf10https://blog.csdn.net/erlib/article/details/38488937

最新推荐
猜你喜欢