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. ...
随机推荐
- 魔板 Magic Squares(广搜,状态转化)
题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 我们知道魔板的每一个方格都有一种颜色.这8种颜 ...
- Java分享笔记:Java网络编程--TCP程序设计
[1] TCP编程的主要步骤 客户端(client): 1.创建Socket对象,构造方法的形参列表中需要InetAddress类对象和int型值,用来指明对方的IP地址和端口号. 2.通过Socke ...
- CentOS上安装oracle11g报错处理
最近,在处理oracle gateway的报错问题.只因个人的测试环境已经迁移到docker上了,又懒得装一套环境就直接在机器上安装oracle11g.今天分享的故事就从此开始-- 运行环境 项目 ...
- Mit6.824 Lab1-MapReduce
前言 Mit6.824 是我在学习一些分布式系统方面的知识的时候偶然看到的,然后就开始尝试跟课.不得不说,国外的课程难度是真的大,一周的时间居然要学一门 Go 语言,然后还要读论文,进而做MapRed ...
- thinkphp发送邮箱(以thinkphp5作为示例)。
第一步:设置我们的邮箱客户端授权码 第二步:下载相应的第三方类库(我这里用的PHPemail) 这是phpemailde 第三方类库的文件下载地址:https://github.com/PHPMail ...
- 怎么修复网站漏洞之metinfo远程SQL注入漏洞修补
2018年11月23日SINE网站安全检测平台,检测到MetInfo最新版本爆出高危漏洞,危害性较大,影响目前MetInfo 5.3版本到最新的 MetInfo 6.1.3版本,该网站漏洞产生的主要原 ...
- 笨方法学python之import sys与from sys import argv的区别
这是在网上看到的一个大神的解答: sys is a module that contains “system functionality”. sys.argv is a list containing ...
- ESP32 LyraT音频开发板试玩(一):搭建开发环境
我是卓波,很高兴你来看我的博客. 系列文章: ESP32 LyraT音频开发板试玩(一):搭建开发环境 ESP32 LyraT音频开发板试玩(二):播放音乐 关于ESP32的开发环境搭建,官方有教程, ...
- (数据科学学习手札23)决策树分类原理详解&Python与R实现
作为机器学习中可解释性非常好的一种算法,决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方 ...
- 单调队列优化dp
洛谷p3800(单调队列优化DP) 题目背景 据说在红雾异变时,博丽灵梦单身前往红魔馆,用十分强硬的手段将事件解决了. 然而当时灵梦在Power达到MAX之前,不具有“上线收点”的能力,所以她想要知道 ...