PHP与webserver【简书看到的】
很久以前,人们造出来一个机器人,它的英文名字叫web server,中文名叫网页服务器。(为了简写,下文称web server为server)
server的工作很简单,就是做内容的分发。
初期的sever功能很简单,只能处理静态请求,当客户端请求/index.html的时候,server去文件系统里面找到对应的index.html文件,然后返回给客户端,这个时期的server就像一个仓库管理员,别人要啥,他给啥。
可是这样的机器人很明显不能满足人们的需求,因为sever机器人只能处理静态请求,却不能处理动态请求,如/index.php或者/index.java,这就好像它是服务员,只能端出做好的红烧肉,却不能自己做出红烧肉。
为了能够让server机器人处理动态请求(做出红烧肉),聪明的人类开始了他们的发明,于是他们在server机器人的肚子上挖出了一个长方形的洞,取名叫做接口,这个接口上只要插入制作红烧肉的智能芯片,server机器就能做红烧肉,插入制作烤鱼的芯片,server机器就能做烤鱼。
为了体现专业性,人们给sever机器人肚子上面的洞,这个接口,取了一个高大上的名字,叫做CGI(全称是是Command Gateway Interface,通常翻译为公共网关接口),通过这个接口,其他的应用程序可以与server机器人进行交互。
制作红烧肉的芯片,叫做php解析器。
制作红烧肉的芯片,叫做java解析器。
当然,与server进行交互的应用程序除了php解析器,java解析器,还有很多。
综上,sever主要工作内容:
(1)处理静态请求,当客户端请求静态文件的时候,如/a.html,web server会去文件系统中找到a.html这个文件,发送给浏览器。
(2)处理动态请求,当客户端请求/a.php的时候,web server会根据自己的配置文件(http.conf或者nginx.conf)得知,该请求的是动态数据,于是web server需要把请求交给PHP解析器(php-cgi)来处理,webserver与php通信需要遵循cgi接口定义的协议,将url地址,header消息头,post/get数据等一系列内容按照一定的格式传给php解析器(即php-cgi)处理,php解析器处理完成之后返回给web server,最后web server接到结果返回给客户端。
好景不长,问题来了
CGI接口的出现,让server能够处理动态请求,让server的功能有另一个飞跃。
每天,客户端与server就这样不断的循环往复:
(1)客户端发送请求给sever
(2)server接收请求和数据
(3)server会fork一个进程来启动对应的CGI程序(这里主要是php-cgi,PHP的解释器是php-cgi)
(4)php-cgi会解析php.ini文件,初始化执行环境,并处理请求,解析CGI接口传来的数据
(5)php-cgi以CGI接口规定的格式返回server处理后的结果
(6)server将结果返回客户端。
可是,好景不长,一心追求完美的人类,发现了一个问题。
每次客户端发起新的请求,server端都会fork一个进程出来启动php-cgi,而php-cgi却又每次都会进行一次初始化的工作(解析php.ini文件,初始化执行环境),人们觉得这样的重复实在效率太低,不仅很消耗时间,还很耗资源,于是想出来一个新的方案。
新的方案来临,FASTCGI的诞生
FASTCGI和CGI一样也是接口,是CGI的升级方案。
当server启动的时候,fastcgi会先启一个master进程(这里是php-fpm,主要用来管理php-cgi),解析php.ini,初始化执行环境,然后再启动多个worker(php-cgi)。当请求过来时,master会传递给一个worker(php-cgi),然后立即可以接受下一个请求,同时,当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些。
这种fastcgi对进程的管理,避免了重复的劳动,提高了性能,缩短了处理的时间,节省了资源,也就成为了目前主流的通信交互方式。
PHP与webserver【简书看到的】的更多相关文章
- iOS离屏渲染简书
更详细地址https://zsisme.gitbooks.io/ios-/content/chapter15/offscreen-rendering.html(包含了核心动画) GPU渲染机制: CP ...
- openlayers 3 简书
1. 简书http://www.jianshu.com/p/6785e755fa0d 2. 文档 http://anzhihun.coding.me/ol3-primer/ch03/03-02.htm ...
- Python 2.7_发送简书关注的专题作者最新一篇文章及连接到邮件_20161218
最近看简书文章关注了几个专题作者,写的文章都不错,对爬虫和数据分析都写的挺好,因此想到能不能获取最新的文章推送到Ipad网易邮箱大师.邮件发送代码封装成一个函数,从廖雪峰大神那里学的 http:// ...
- 从刚刚「简书」平台的短暂异常,谈Nginx An error occurred报错~
09.26简书平台的短暂异常 An error occurred. Sorry, the page you are looking for is currently unavailable. Plea ...
- swift调用oc语言文件,第三方库文件或者自己创建的oc文件——简书作者
Swift是怎样调用OC的第三方库的呢?请看下面详情: 情况一: 1.首先打开Xcode,iOS->Application->Single View Application, 选Next. ...
- iOS实现简书的账号识别方式(正则表达式)
通过简书iOS客户端登录,我们会看到请输入手机号或者邮箱登录,但是我们随机输入1234567的时候,便会弹出手机格式不正确,同样也会识别我们的邮箱格式,那么我们在项目中怎么实现这种判断呢? 0E471 ...
- 倒戈了,转投简书 -------->
深情自白 还记得数月前那个月黑风高的晚上,笔主偶遇简书,被那婀娜多姿的Markdown输出深深吸引不能自拔,从此立下毒誓要两边同时发布.然而天有不测风云(这边的太丑),前思后想寝食难安之后作出决定,正 ...
- iOS开发--Bison详解连连支付集成简书
"最近由于公司项目需要集成连连支付,文档写的不是很清楚,遇到了一些坑,因此记录一下,希望能帮到有需要的人." 前面简单的集成没有遇到什么坑,在此整理一下官方的集成文档,具体步骤如下 ...
- 仿简书、淘宝等等App的View弹出效果
昨天用简书App的时候觉得这个View的弹出效果特别好,而且非常平滑,所以我就尝试写了一个,和简书App上的效果基本一致了: 下面开始讲解: 1.首先我们要知道这个页面有几个View?这个页面其实有四 ...
- 简书APP
找第三方的时候看到简书这个APP,上网搜了一下发现网页版非常的干净,开头的一篇文章就是"你没实力就别心存侥幸",看完也挺有有同感的.文章网址:http://www.jianshu. ...
随机推荐
- JavaScript文本框焦点事件
效果图如下: <!-- 当文本框获得焦点时候,如果文本框内容是 请输入搜索关键字 清空文本框,输入内容变黑色 --> <!-- 当文本框失去焦点时候,如果文本框无内容,则添加灰色的 ...
- 吐血分享:QQ群霸屏技术教程2017(效益篇)
懂得如何做群排名了,接下来就要实质性的考虑产出了. 可能,咱们经常发现,一些群里拉人的,进群看某片,5元钱终生,这类是灰色的.其实正规的付费空间也很大. 群利润空间 有工作,有产品,有项目,可以做群排 ...
- 微信小程序 提示框延时跳转
wx.showToast({ title: '成功', icon: 'success', duration: 2000, success:function(){ console.log('haha') ...
- hadoop生态搭建(3节点)-07.hive配置
# http://archive.apache.org/dist/hive/hive-2.1.1/ # ================================================ ...
- 原lnmp环境服务器升级为mysql+nginx+php单个docker容器构建的lnmp环境
时间:2018年2月 一.项目背景 我单位现web服务架构为lnmp环境,服务器软件.硬件升级部署难:同时开源软件日新月异,考虑到技术升级,领导决定服务器架构整体升级为容器架构,维护性.移植性强. 二 ...
- 50条大牛C++编程开发学习建议
每个从事C++开发的朋友相信都能给后来者一些建议,但是真正为此进行大致总结的很少.本文就给出了网上流传的对C++编程开发学习的50条建议,总结的还是相当不错的,编程学习者(不仅限于C++学习者)如果真 ...
- Python自动化运维——DNS处理模块
Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:dnspython 功能: 支持所有的记录类型 可以用于查询.传输并动态更新ZONE信息 支持TSIG(事务 ...
- R语言学习笔记(十二):零碎知识点(31-35)
31--round(),floor()和ceiling() round()四舍五入取整 floor()向下取整 ceiling()向上取整 > round(3.5) [1] 4 > flo ...
- ABAP CDS - Syntax
The syntax of the DDL and of the DCL of the ABAP CDS comprises elements of the general DDL and DCL o ...
- 详解 RPL、DPL、CPL 的关系
保护模式中最重要的一个思想就是通过分级把代码隔离了起来,不同的代码在不同的级别,使大多数情况下都只和同级代码发生关系.Intel的80286以上的cpu可以识別4个特权级(或特权层) ,0级到3级.数 ...