iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP-FMP指的是什么
  • 667
分享到

PHP-FMP指的是什么

2023-06-15 10:06:39 667人浏览 八月长安
摘要

小编给大家分享一下PHP-FMP指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是php-fpm在了解php-fpm之前,请大家先思考一个问题,一个用

小编给大家分享一下PHP-FMP指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

什么是php-fpm

  • 在了解php-fpm之前,请大家先思考一个问题,一个用户发起了一个WEB(niginx服务器)请求,在php代码里面,那么我们怎么样才可以通过 $_POST,$_GET,$_SERVER获取一些请求信息呢?我们应该参照什么格式去组装数据呢?

其实我们知道,每种动态语言,也就是解释性语言,都需要通过对应的解析器才能被服务器(这里指web服务器)识别,但是解释器和服务器 必须遵循某种协议,双方才能够正常通信,那么这种协议就是CGI协议,但是CGI的机制是每响应一次web请求,都会创建和初始化一个新的处理进程,请求结束就kill掉这个进程。那每次请求,都要执行这三步  创建->初始化->结束,那其实这个过程不仅浪费了资源,而且效率也很低。那怎么办?FastCGI应时而生,作为CGI的改良版本,FastCGI会启动一个常驻服务进程,这个进程不需要管理生命周期,也就避免了进程的重复的创建和结束,另一方面,不需要再重复的读取环境变量,每当有web请求过来,由FastCGI管理器,也就那个常驻服务进程去启动CGI解释器进程

PHP-FMP指的是什么

  • 好了,既然有了CGI,那么针对这些解释性语言,比如php phython,都要根据自己的语言做一个适配吧。那么php官方就弄出来了PHP-CGI,php定制版的CGI。

  • 但是随着使用,大家发现了PHP-CGI的问题

修改php.ini 后必须重启PHP-CGI才可以生效,而不能实现平滑重启2.直接干掉PHP-CGI,php就不能运行了,这显然是不能接受的3.这玩意不会自己管理进程,它只能解析请求,返回结果

那么FastCGI都已经到来了,php的FastCGI还会远吗,当然不会,到 2004年一个叫 Andrei Nigmatulin的屌丝发明了PHP-FPM,PHP-FMP 全名叫做PHP-FASTCGI Process Manager,说白了就是php定制版的FastCGI(这里强调一下,不管是PHP-CGI 还是 PHP-FPM都是为了实现CGI协议,而不是一种新的协议),其实有一句话刚才我没说,网上很多人说PHP-CGI 就是 php管理FAST-CGI的一种程序,那你现在知道了PHP-FMP 全名叫做PHP-FASTCGI Process Manager之后,你可以理直气壮的跟他们说no,并给他们普及一下这个知识点了。

php-fpm的进程包括 master(常驻服务程序)和worker进程两种
master进程
  • master负责进程的调度(比如worker进程不够的时候去fork一个子进程)

  • 负责监听端口,一般是9000这个端口,可以在配置文件里面设置,当然,还有另外一种方式,就是通过Socket,可以通过netstat -nap | grep master的进程号 查看端口信息(9000端口其实就是tcp的通信方式,而socket是说的unix socket,从效率上来说,unix socket显然是最好的,因为它是进程之间的通信,但是unix socket要保证是在一台服务器,如果是不同机器之间的通信,还是要使用tcp通信)

PHP-FMP指的是什么

PHP-FMP指的是什么

  • 接收来自服务器的请求

work进度 看名字就知道了,就是真正的打工阶级,代码真正执行的地方

PHP-FMP指的是什么

  • 再来看看php-fmp和nignx是怎么通信的

以socker通信为栗子,Nginx的conf文件里面,可以看到下面这段信息

        location ~ [^/]\.php(/|$)        {            try_files $uri =404;            fastcgi_pass  unix:/tmp/php-cgi.sock;            fastcgi_index index.php;            include fastcgi.conf;        }

相信这段信息大家都可以看明白,/tmp/php-cgi.sock 就是php和nginx联系的桥梁,同时我们也看到了include fastcgi.conf,我们来看一下

root@6d05153a8988:/usr/local/nginx/conf# cat fastcgi.conffastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;fastcgi_param  QUERY_STRING       $query_string;fastcgi_param  REQUEST_METHOD     $request_method;fastcgi_param  CONTENT_TYPE       $content_type;fastcgi_param  CONTENT_LENGTH     $content_length;fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;fastcgi_param  REQUEST_URI        $request_uri;fastcgi_param  DOCUMENT_URI       $document_uri;fastcgi_param  DOCUMENT_ROOT      $document_root;fastcgi_param  SERVER_PROTOCOL    $server_protocol;fastcgi_param  REQUEST_SCHEME     $scheme;fastcgi_param  https              $Https if_not_empty;fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;fastcgi_param  REMOTE_ADDR        $remote_addr;fastcgi_param  REMOTE_PORT        $remote_port;fastcgi_param  SERVER_ADDR        $server_addr;fastcgi_param  SERVER_PORT        $server_port;fastcgi_param  SERVER_NAME        $server_name;# PHP only, required if PHP was built with --enable-force-cgi-redirectfastcgi_param  REDIRECT_STATUS    200;fastcgi_param PHP_ADMIN_VALUE "open_basedir=NULL";

我们看到了一些熟悉的,比如REMOTE_ADDR,REQUEST_URI,现在你应该明白了,我们通过$_SERVER获取到的信息就是这个配置文件里面指定的

我们再来看一下php-fmp的配置文件(请注意看里面的注释,我不做解释了)

root@6d05153a8988:/usr/local/php/etC# cat php-fpm.conf[global]pid = /usr/local/php/var/run/php-fpm.piderror_log = /usr/local/php/var/log/php-fpm.loglog_level = notice[www]listen = /tmp/php-cgi.socklisten.backlog = -1listen.allowed_clients = 127.0.0.1listen.owner = wwwlisten.group = wwwlisten.mode = 0666user = wwwgroup = www# 如何控制子进程,选项有static和dynamic#区别:#如果dm设置为 static,那么其实只有pm.max_children这个参数生效。系统会开#启设置数量的php-fpm进程。#如果dm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效。#系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程,#然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之#间调整php-fpm进程数。pm = dynamic# 静态方式下开启的php-fpm进程数量pm.max_children = 20# 动态方式下的起始php-fpm进程数量pm.start_servers = 10# 动态方式下的最小php-fpm进程数pm.min_spare_servers = 10# 动态方式下的最大php-fpm进程数量pm.max_spare_servers = 20# php-fpm子进程能处理的最大请求数pm.max_requests = 1024pm.process_idle_timeout = 10srequest_terminate_timeout = 100request_slowlog_timeout = 0slowlog = var/log/slow.log
  • 关于php-fpm 的相关操作

INT, TERMQUIT 平滑终止USR1 重新打开日志文件USR2 平滑重载所有worker进程并重新载入配置和二进制模块

启动: /usr/local/php/sbin/php-fpm查看进程数: ps aux | grep -c php-fpm查看mater进程号:ps aux|grep 'php-fpm: master'|grep -v grep|awk '{print $2}' 或者cat /usr/local/php/var/run/php-fpm.pid

# 强制关闭pkill php-fpmkill -INT `cat /usr/local/php/var/run/php-fpm.pid` kill -INT [pid]# 平滑重启 其实就是通过创建新的进程使 php.ini 生效kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`kill -USR2 [pid]

以上是“PHP-FMP指的是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网PHP编程频道!

--结束END--

本文标题: PHP-FMP指的是什么

本文链接: https://www.lsjlt.com/news/279658.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP-FMP指的是什么
    小编给大家分享一下PHP-FMP指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是php-fpm在了解php-fpm之前,请大家先思考一个问题,一个用...
    99+
    2023-06-15
  • php指的是什么
    php是一种通用开源脚本语言,中文名为超文本预处理器,该语法吸收了C语言、Java和Perl的特点,易学、使用广泛,主要适用于Web开发领域,随着移动应用的兴起,php也可用于开发API接口,它支持几乎所有流行的数据库以及操作系统,所有的C...
    99+
    2024-04-02
  • php mvc指的是什么
    本篇内容介绍了“php mvc指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php mvc是一种设计模型;mvc中的M表示mode...
    99+
    2023-06-22
  • php mail指的是什么
    这篇“php mail指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php mail指的是什么”文章吧。php m...
    99+
    2023-07-05
  • php bom指的是什么
    今天小编给大家分享一下php bom指的是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php bom是用来判断文本文件...
    99+
    2023-07-05
  • php sdk指的是什么
    本篇内容介绍了“php sdk指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php sdk是一种工具包,其中封装了日志服务的所有A...
    99+
    2023-07-05
  • php的vc15指的是什么
    本篇内容主要讲解“php的vc15指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php的vc15指的是什么”吧!php vc15指的是该版本PHP是用Visual Studio 201...
    99+
    2023-06-21
  • 币种php指的是什么
    币种php指的是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。币种php是指菲律宾比索货币编码,菲律宾比索是菲律宾的法定货币,1菲律宾比索相等于100 centavos...
    99+
    2023-06-26
  • php中date指的是什么
    这篇文章主要介绍“php中date指的是什么”,在日常操作中,相信很多人在php中date指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中date指的是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-29
  • php中$_GET指的是什么
    这篇文章主要介绍“php中$_GET指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php中$_GET指的是什么”文章能帮助大家解决问题。在php中,“$_GET”的意思为获取GET数据,它...
    99+
    2023-06-29
  • php中Suhosin指的是什么
    小编给大家分享一下php中Suhosin指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、说明Suhosin是一个PHP程序的保护系统。它的设计初衷是为...
    99+
    2023-06-15
  • php中apc指的是什么
    这篇文章主要讲解了“php中apc指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中apc指的是什么”吧!在php中,apc全称“Alternative PHP Cache”,...
    99+
    2023-06-29
  • php缓存指的是什么
    这篇文章主要介绍“php缓存指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php缓存指的是什么”文章能帮助大家解决问题。php缓存是一种运行模式,属于边编译边运行,包括PHP编译缓存和PH...
    99+
    2023-07-04
  • php中d指的是什么
    这篇“php中d指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php中d指的是什么”文章吧。php d指的是Thi...
    99+
    2023-07-04
  • PHP中Zval指的是什么
    这篇文章给大家分享的是有关PHP中Zval指的是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、概念Zval是zend中另一个非常重要的数据结构,用来标识并实现PHP变量。包含了PHP中的变量值和类型的相关...
    99+
    2023-06-15
  • php中range指的是什么
    这篇文章主要介绍“php中range指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php中range指的是什么”文章能帮助大家解决问题。在PHP中,range()函数是创建一个包含指定范围...
    99+
    2023-06-29
  • PHP反射指的是什么
    这篇“PHP反射指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP反射指的是什么”文章吧。反射,直观理解就是根据...
    99+
    2023-07-05
  • php中302指的是什么
    这篇“php中302指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php中302指的是什么”文章吧。在php中,3...
    99+
    2023-06-30
  • php中nts指的是什么
    本篇内容介绍了“php中nts指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!NTS即None-Thread Safe,一般以fas...
    99+
    2023-06-20
  • php中mkdir指的是什么
    这篇文章主要介绍“php中mkdir指的是什么”,在日常操作中,相信很多人在php中mkdir指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中mkdir指的是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作