php-cgi并发,对于php-fpm和cgi,还有并发响应的理解

参考链接:

首先搞清楚php-fpm与cgi的关系

cgi

cgi是一个web server与cgi程序(这里可以理解为是php解释器)之间进行数据传输的协议,保证了传递的是标准数据。

php-cgi

php-cgi是php解释器,就是上文提到的cgi程序。

Fastcgi

Fastcgi是用来提高cgi程序(php-cgi)性能的方案/协议。

cgi程序的性能问题在哪呢?"PHP解析器会解析php.ini文件,初始化执行环境",就是这里了。标准的CGI对每个请求都会执行这些步骤,所以处理的时间会比较长。

Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复劳动,效率自然提高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是Fastcgi的对进程的管理。

php-fpm

上文提到了Fastcgi只是一个方案或者协议,那么php-fpm就是这个实现了Fastcgi的程序,也就是说,上文所描述的进程分配和管理是FPM来做的。官方对FPM的解释是 Fastcgi Process Manager(Fastcgi 进程管理器) 。

PHP对并发访问的处理

进程和线程

PHP从代码级别来讲不支持多线程操作,不能像Java、C#等语言一样可以编写多线程代码。但多线程和并发没有直接关系,多线程只是代码被运行时在同一时间同时执行多个线程任务,来提高服务器CPU的利用率,提高代码效率。但php是可以多进程执行的,上文所述的FPM进程管理机制就是多进程单线程的,有效提高了并发访问的响应效率。

简单的web server + php-fpm 模式

1. 当客户端发送一个请求时,web server会通过一个php-fpm进程(这里和下文所说指的fpm进程都是fpm开启的worker进程,关于fpm的工作原理这里不再累述)去执行php代码,php代码的执行是单线程的。

2. 那么,当有多个客户端同时发送请求时(并发),web server会通过php-fpm为每个请求开启一个单独进程去执行php代码。

3. 请求执行过后,空闲的php-fpm进程被销毁,内存得以释放。

4. 但并发的问题在于,在某一时间,客户端请求让php-fpm进程数量达到了最大限制数,这个时候,新来的请求只能等待空闲的php-fpm进程来处理,这就是多进程同步阻塞模式的弊端,当然还有进程过多所带来的内存占用问题。

内容来源于网络如有侵权请私信删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

更改应用程序图标_在 Windows 10 version 1903 中查看应用程序是否支持 DPI 感知

在显示屏幕上,每英寸点数(DPI)定义构成面板的每个物理单元的像素数。传统上,显示器每英寸输出 96 个像素。但随着技术的发展,各大公司的产品已经开始增加同一物理空间中的像素数,也就造成了屏幕的 DPI 达到 200 甚至更高&#xff…

python程序分析,用Python编写分析Python程序性能的工具的教程

用Python编写分析Python程序性能的工具的教程来源:中文源码网 浏览: 次 日期:2018年9月2日【下载文档: 用Python编写分析Python程序性能的工具的教程.txt 】(友情提示:右键点上行txt文档名->目标另存为)用Python编写分析Python程序…

tina中信号带宽_关于通频带,3dB带宽,三阶截点和1dB压缩点,截止频率,频率范围,带宽,特征频率(中心频率),截止频率和增益(db)...

1、通频带通频带用于衡量放大电路对不同频率信号的放大能力。由于放大电路中电容、电感及半导体器件结电容等电抗元件的存在,在输入信号频率较低或较高时,放大倍数的数值会下降并产生相移。通常情况下,放大电路只适用于放大某一个特定频率范围…

php+控制器+数据库,Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法_PHP...

本文实例讲述了Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法。分享给大家供大家参考,具体如下:前言:laravel创建数据库,实际可以手动创建,如古老的phpmyadmin 等均可以。一、数据库连接&#xff1a…

64位百度云 catia v6_福利缩水:百度网盘决定收回部分储存空间

近日,百度网盘公众号对外发布公告称,希望通过合理的资源调配,提升闲置空间使用率,让更多有切实需求的用户享受到优质、稳定、安全的个人云存储服务。因此,对百度网盘的存储空间方案做出调整。具体来看,2018…

物流配送系统设计java,ZigBee物流配送系统设计

目前生产系统的物流配送大部分仍处于较落后的状态,使用单位有物料需求时通过电话或邮件与配送单位进行沟通,这种方式存在沟通不及时和缺少数据记录的缺陷。在出现缺料问题时造成无法追究问题的责任单位,容易出现推脱等问题,对管理…

互联网产品生命周期_我市扎实推进全生命周期公共法律服务产品研发

近日,江苏省司法厅公布全省企业全生命周期公共法律服务产品研发评选活动结果,我市司法局、公证处报送的“区块链公证赋强平台”产品,以总分第一的好成绩荣获全省一等奖。近年来,市司法局充分发挥司法行政职能作用,持续…

php本地文件打包代码,PHP实战:几行代码轻松实现PHP文件打包下载zip

《PHP实战:几行代码轻松实现PHP文件打包下载zip》要点:本文介绍了PHP实战:几行代码轻松实现PHP文件打包下载zip,希望对您有用。如果有疑问,可以联系我们。PHP应用//获取文件列表function list_dir($dir){$result arra…

python的django项目中怎么添加app_django下如何创建多个app并设置urls

1、创建第二个app假设我们项目P下面已经有了一个默认的app,名字是app1。现在我想创建第二个app,名字时app2。进入pychram下的Terminal中,运行命令:python manage.py startapp app2此外,我在每个app下都建立一个urls.py…

oracle监听启动命令6,[转] oracle 监听

启动监听:lsnrctl start查看监听:lsnrctl status停止监听:lsnrctl stop1、oracle 数据服务器包括:实例进程和数据库;实例进程包括:memory structure(sga)以及background process(pmon(进程监控)、smon(系统…

stripfxg php,zzcms v8.2 中的众多cve分析

看了一下最近的cve列表,发现有大佬怒刷了好多个cve,这个zzcms都快被审穿了,所以跟进学习一下CMS背景本文跟踪的这个cms,属于一个开源招商网站管理系统,属于比较小的cms,所以很多地方写的不是很完善&#xf…

python捕获异常装饰器_python异常装饰器--比较全的版本了

#异常捕获装饰器(亦可用于类方法)def try_except_log(fNone, max_retries: int 5, delay: (int, float) 1, step: (int, float) 0,exceptions: (BaseException, tuple, list) BaseException, sleeptime.sleep,processNone, validateNone, callbackNone, defaultNone):"&…

matlab weibpdf函数,matlab建模常用函数

附录Ⅰ 工具箱函数汇总Ⅰ.1 统计工具箱函数表Ⅰ-1 概率密度函数函数名 对应分布的概率密度函数betapdf 贝塔分布的概率密度函数binopdf 二项分布的概率密度函数chi2pdf 卡方分布的概率密度函数exppdf 指数分布的概率密度函数fpdf f分布的概率密度函数gampdf 伽玛分布的概率密度…

拉普拉斯变换_拉普拉斯变换——奇妙的数学

无奈学不会工程数学中的拉普拉斯变换,没办法去感知他的存在形式,在YOUTOBE上看到一个讲解拉普拉斯变换的视频,好像懂了些,分享给同样迷茫的小伙伴,下载的时候是有字幕的,发到知乎上就没字幕了,英…

linux下计算目录文件和,统计Linux 中文件和文件夹/目录的数量(示例代码)

嗨,伙计们,今天我们再次带来一系列可以多方面帮助到你的复杂的命令。 通过操作命令,可以帮助您计数当前目录中的文件和目录、递归计数,统计特定用户创建的文件列表等。在本教程中,我们将向您展示如何使用多个命令&…

没有足够的值_元丰通宝值多少钱吗?市场价值如何?有没有足够的收藏空间?...

元丰通宝是宋代神宗年间发行的,那么你知道现在元丰通宝值多少钱吗?市场价值如何?有没有足够的收藏空间?宋代虽然没有强大的军事实力,但其国内经济水平得到了发展,在许多朝代都处于领先地位。在元丰通宝的铸…

Linux不能读取目录,关于Linux上面无法读取资源目录下文件的问题

一开始我的代码是这样子的,读取本地子路径下的json文件代码运行的时候,在window是可以正常的Overridepublic String getBannerStr() {String str "";try {Resource resource new ClassPathResource("json/abc.json");File file resource.getFile();str …

jsp中java代码无效_来杯咖啡,教你如何优雅的在java中统计代码块耗时

推荐阅读:Sping源码RedisNginxMySQL等七篇实战技术文档,阿里大佬推荐阿里内部:2020年全技术栈文档PPT分享,(万粉总结,回馈粉丝)在我们的实际开发中,多多少少会遇到统计一段代码片段的耗时的情况&#xff0c…

linux 随机抽取文件,shell 随机从文件中抽取若干行的实现方法

shuf -n5 main.txtsort -R main.txt | head -5awk -vN5 -vC"wc -l file" BEGIN{srand();while(nwhile read line;do echo "$line $RANDOM";done < main.txt | sort -k2,2n| awk NR<5{print $1}shuf 命令的选项&#xff1a;-e, --echo &#xff1a;将…

c++—引用。。。

目录 目录前言引用的概念交换a和b的值&#xff1a;引用作为函数的返回值常引用例子 前言 纯自学&#xff0c;看的mooc上郭老师的课&#xff0c;整理整理。。。不然全忘了。。 引用的概念 类型名&引用名某变量名&#xff1b; int&rn&#xff1b; r引用了n&#x…