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对进程的管理,避免了重复的劳动,提高了性能,缩短了处理的时间,节省了资源,也就成为了目前主流的通信交互方式。

时间: 2024-10-13 10:40:01

PHP与webserver【简书看到的】的相关文章

【凯子哥带你学Android】Andriod性能优化之列表卡顿——以“简书”APP为例

这几天闲得无聊,就打开手机上的开发者模式里面的"GPU过度绘制"功能,看看别家的App做的咋样,然后很偶然的打开了"简书",然后就被它的过度绘制惊呆了,于是写了这篇性能分析的文章,从一个只有APK文件的角度,说下如何寻找布局中可能存在的性能问题,以及解决方案.本文章以简书Android最新版本1.9.1进行分析. GPU过度绘制 Hierarchy View SysTrace TraceView 总结 分析资源下载 GPU过度绘制 首先打开下面两个功能开关 开发者模

《信息安全技术》简书破密

wireshark网络捕获 今天的作业是用wireshark软件捕获网络 我就用它捕获了我登的简书登录账号跟密码,密码是假的,但账号跟错误的密码都捕获成功了. 首先打开软件,点开所用的网络类型,我的是WALN 然后打开网址登录网页,登陆账号 接下来找,因为我登的是http协议,所以可以在应用显示过滤器中输入hhttp.request.method==POET来节省时间 找到了,账号 错误的密码都捕获到了 真的好神奇!越来越对这些课感兴趣了.

如何用css实现类似简书的纵向导航/竖排导航

作为一个专注阅读的网站,它的导航也一定是全局的,固定的,也是简洁的.事实上几家阅读网站豆瓣阅读,多看,简书都是这样做的,刚好实现起来也不算复杂,以下是我想到的实现方法. 首先是html的结构: 1 <body> 2 <nav> 3 <div> 4 <a href="#">点</a> 5 <a href="#">滴</a> 6 <a href="#">一

iOS实现简书的账号识别方式(正则表达式)

通过简书iOS客户端登录,我们会看到请输入手机号或者邮箱登录,但是我们随机输入1234567的时候,便会弹出手机格式不正确,同样也会识别我们的邮箱格式,那么我们在项目中怎么实现这种判断呢? 0E471361-060C-4D93-913F-73622F89BC60.png 这就是我们今天要说的正则表达式. 正则表达式的介绍 正则表达式有多种使用方法,根据我们的需要,我们是要判断输入是否合法,还是查找指定的内容,还是捕获多个输入的内容,可以选用不同的方法,今天我们主要说一下,判断输入是否合法,用谓词

简书-markdown

标题 这是最为常用的格式,在平时常用的的文本编辑器中大多是这样实现的:输入文本.选中文本.设置标题格式. 如: # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 注:# 和「一级标题」之间建议保留一个字符的空格,这是最标准的 Markdown 写法. 你可以你的编辑器中尝试输入这六级标题,可以参考下方的截图: 一级标题至六级标题 列表 Markdown 中,只需要在文字前面加上 - 如: - 文本1 - 文本2 - 文本3 有序排列

转载:简书 vim环境配置 作者 fromradio 留作备忘 如侵权请联系删除

为Python创建Vim环境 作者 fromradio 2016.08.04 11:36* 字数 1766 阅读 504评论 0喜欢 12 大部分Python使用者可能习惯使用Sublime Text 3等笔记本式的编辑器.然而实际工作环境中有可能遇到需要在无GUI环境下工作的情况,比如需要登录到虚机上进行调试等.此时vim成为了常用的编辑器选择,所以如何使得vim变得心应手成为一个重要的问题. 第一个问题是vim版本的问题,笔者工作环境中的red hat 6版本的默认vim为7.2,不能支持后

Python 2.7_多进程获取简书专题数据(一)

学python几个月了正好练练手,发现问题不断提高,先从专题入手,爬取些数据,一开始对简书网站结构不熟悉,抓取推荐,热门,城市3个导航栏,交流发现推荐和热门是排序不同,url会重复,以及每个专题详情页三个类目最新评论,最新收录, 热门也会重复 做了下调整,代码执行完毕会返回所有专题的urls元组对象,以便下一步进入每个专题页面解析获取其他数据.注:变量focus关注数,和打开专题后最上面显示的专题关注人数会有差异,例如有的专题关注了10175人,在专题列表页会显示成"10.07k",因

[开源,学习,分享]UWP第三方简书客户端分享

简介 Windows10正式版发布到现在,我利用零零碎碎的一些时间对UWP进行一些学习,也基于这门技术开发了一个第三方的简书App. 基本界面 优酷视频: http://v.youku.com/v_show/id_XMTM2MjU4MjI4NA==.html 基本功能 客户端采用了UWP的技术,所以支持x86,x64,ARM平台,采用了响应式的布局.对手机进行了部分的优化. 对SQLite和本地存储进行了封装,支持缓存. 缓存支持同步和异步的两种方式,分别实现了两个接口: internal in

博客园不支持Markdown语法,新博客将发在简书...

由于博客园博文编辑界面不支持Markdown语法,发在其它平台的博客很难轻松复制过来... 未来新博客将只发在简书里,虽然也很少写博客哈哈... 我的简书个人主页:http://www.jianshu.com/u/f8590867dc2a

[程序猿]推荐17个很有用的在线工具 - 简书

简 首页 专题 发钱啦 注册 登录 简首页 专题 下载手机应用 简书 交流故事,沟通想法 iOS· Android 显示模式 登录 下载简书移动应用 注册 登录 添加关注 作者 郭小力 2016.08.25 12:12 写了8570字,被20人关注,获得了67个喜欢 [程序猿]推荐17个很有用的在线工具 字数1032 阅读188 评论1 喜欢16 收藏文章 分享 1. ExplainShell.com 命令解释 对于Linux用户来说每天都会写各种命令和脚本,那么你可以使用这个网站工具来查看命令