php中的php-fpm

主题:到底php-fpm是什么???怎么用???

背景关键词:CGI FAST-CGI

1.什么是CGI?

最最最最先的网页,网站都只能是静态。随着发展的需要,处理动态的网站成为必要,此刻CGI(通用网关接口)登场,CGI是用于处理webserver和浏览器进行交互的协议。可将html页面上的数据传递到php解释器,然后php解释器处理完成后将数据解析成html返回给浏览器。

2.什么是FAST-CGI?

CGI的改良版,CGI只能一个请求fork出一个worker,然后kill掉,再有请求再循环,这样很浪费资源,FAST-CGI每次处理完请求后,不会kill掉这个进程,而是保留这个进程,使这个进程可以一次处理多个请求。这样每次就不用重新fork一个进程了,大大提高了效率。

3.什么是PHP-FPM?

PHP-FPM即php-Fastcgi Process Manager,是 FastCGI 在php中的应用,专用于php进程管理。php-fpm进程管理流程图如下


4.php-fpm进程启动模式说明

pm = dynamic/static/ondemand  设置php-fpm进程启动模式

      dynamic 动态进程,常用模式,首先在fpm启动时按照`pm.start_servers`初始化一定数量的worker,运行期间如果master发现空闲worker数低于`pm.min_spare_servers`配置数(表示请求比较多,worker处理不过来了)则会fork worker进程,但总的worker数不能超过`pm.max_children`,如果master发现空闲worker数超过了`pm.max_spare_servers`(表示闲着的worker太多了)则会杀掉一些worker,避免占用过多资源,master通过这4个值来控制worker数

       static 这种方式比较简单,在启动时master按照`pm.max_children`配置fork出相应数量的worker进程,即worker进程数是固定不变的

        ondemand这种方式一般很少用,在启动时不分配worker进程,等到有请求了后再通知master进程fork worker进程,总的worker数不超过`pm.max_children`,处理完成后worker进程不会立即退出,当空闲时间超过`pm.process_idle_timeout`后再退出

5.php-fpm.conf配置优化

php-fpm.conf配置及优化请点这

最后推荐看一本书:php内核剖析 上面有讲解的很详细

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文github地址 1.PHP概述 1.1 PHP的历史发展 1995年由Lerdorf创建PHP,高级脚本语言...
    10xjzheng阅读 1,572评论 0 2
  • 在实际的开发和应用中偶发的502,504让人头痛,下面转发一个写的比较全面的。 PHP-fpm PHP-FPM是一...
    daos阅读 2,534评论 2 18
  • 需要清楚的几个概念: FPM进程:进程数在php-fpm.ini中设置。没有设置 max_requests ,那么...
    fujun_195a阅读 3,118评论 1 13
  • Nginx的工作原理 1.Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,...
    架构飞毛腿阅读 6,302评论 1 27
  • 之前学习过的设计模式,有对行为的封装(策略模式),有对创建的封装(工厂方法和抽象工厂),今天要学的命令模式(Com...
    akak18183阅读 285评论 0 0

友情链接更多精彩内容