SlideShare una empresa de Scribd logo
1 de 24
PHP & Web Servers -- 大罗 (Rollenc)
Directory ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Apache Request Circle
Apache Request Circle(1) 1 、 Post-Read-Request 阶段 在正常请求处理流程中,这是模块可以插入钩子的第一个阶段。 对于那些想很早进入处理请求的模块来说,这个阶段可以被利用。 2 、 URI Translation 阶段 Apache 在本阶段的主要工作:将请求的 URL 映射到本地文件系统。 模块可以在这阶段插入钩子,执行自己的映射逻辑。 mod_alias 就是利用这个阶段工作的。 3 、 Header Parsing 阶段 Apache 在本阶段的主要工作:检查请求的头部。由于模块可以在请求 处理流程的任何一个点上执行检查请求头部的任务,因此这个钩子很少被使用。 mod_setenvif 就是利用这个阶段工作的。
Apache  Request Circle(2) 4 、 Access Control 阶段 Apache 在本阶段的主要工作:根据配置文件检查是否允许访问请求的资源。 Apache 的标准逻辑实现了允许和拒绝指令。 mod_authz_host 就是利用这个阶段工作的。 5 、 Authentication 阶段 Apache 在本阶段的主要工作:按照配置文件设定的策略对用户进行认证, 并设定用户名区域。模块可以在这阶段插入钩子,实现一个认证方法。 6 、 Authorization 阶段 Apache 在本阶段的主要工作:根据配置文件检查是否允许认证过的用户 执行请求的操作。模块可以在这阶段插入钩子,实现一个用户权限管理的方法。
Apache Request Circle(3) 7 、 MIME Type Checking 阶段 Apache 在本阶段的主要工作:根据请求资源的 MIME 类型的相关规则,判定 将要使用的内容处理函数。标准模块 mod_negotiation 和 mod_mime 实现了这个钩子。 8 、 FixUp 阶段 这是一个通用的阶段,允许模块在内容生成器之前,运行任何必要的处理流程。 和 Post_Read_Request 类似,这是一个能够捕获任何信息的钩子, 也是最常使用的钩子。 9 、 Response 阶段 Apache 在本阶段的主要工作:生成返回客户端的内容,负责给客户端发送 一个恰当的回复。这个阶段是整个处理流程的核心部分。
Apache Request Circle(4) 10 、 Logging 阶段 Apache 在本阶段的主要工作:在回复已经发送给客户端之后记录事务。 模块可能修改或者替换 Apache 的标准日志记录。 11 、 CleanUp 阶段 Apache 在本阶段的主要工作:清理本次请求事务处理完成之后遗留的环境, 比如文件、目录的处理或者 Socket 的关闭等等,这是 Apache 一次请求处理 的最后一个阶段。
Nginx Request Circle(1) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Nginx Request Circle(2) ,[object Object],[object Object],[object Object],[object Object],[object Object]
php_mod Circle ,[object Object],[object Object],[object Object],[object Object],[object Object]
mpm This Multi-Processing Module (MPM) implements a hybrid multi-process multi-threaded server. By using threads to serve requests, it is able to serve a large number of requests with less system resources than a process-based server. Yet it retains much of the stability of a process-based server by keeping multiple processes available, each with many threads.
mpm_prefork 进程模式,预先申请 单进程内存暂用约: 1.7M With mod_php: 3.7M
mpm_worker 支持多线程和多进程混合模型的 MPM 线程 * 进程 单进程内存暂用约: 2.1M ~ 4.3M PHP 部分模块是非线程安全
  FastCGI  建立一个 HTTP/Socket ,和 webserver 交互 + Apache/Nginx/lighttpd
Nginx & LightTPD ,[object Object],[object Object],[object Object]
FastCgi Circle ,[object Object],[object Object],[object Object],[object Object],[object Object]
Start a FastCGI /usr/bin/php-cgi -q -b localhost:9000  (2.1M) /usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000    -C 2 -u www-data -f /usr/bin/php5-cgi  (2.4M)
Apache + FastCGI 1. Apache mod_fastcgi AddHandler fcgid-script .php Options +ExecCGI FcgidWrapper /usr/local/bin/php-wrapper .php 2. Apache mod_fcgid AddHandler fastcgi-script php
Nginx + FastCGI ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Nginx & LightTPD ,[object Object],[object Object],[object Object],[object Object]
Diff 1. Apache && Nginx  输出有 Buffer      堵塞 render 函数 2. Lighttpd  无 buffer      别输出大数据量,比如       echo file_get_contents($bigfile);
Ref ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Q & A  
Thanks

Más contenido relacionado

La actualidad más candente

Apache配置文件说明
Apache配置文件说明Apache配置文件说明
Apache配置文件说明
wensheng wei
 
Cent os 安装 subversion
Cent os 安装 subversionCent os 安装 subversion
Cent os 安装 subversion
YUCHENG HU
 
Apache trafficserver
Apache trafficserverApache trafficserver
Apache trafficserver
Din Dindin
 
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理
haiyuan ning
 

La actualidad más candente (19)

Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应
 
PHP 應用之一 socket funion : 偽 WEB Server
PHP 應用之一 socket funion : 偽 WEB ServerPHP 應用之一 socket funion : 偽 WEB Server
PHP 應用之一 socket funion : 偽 WEB Server
 
ELK日志分析搭建过程文档
ELK日志分析搭建过程文档ELK日志分析搭建过程文档
ELK日志分析搭建过程文档
 
Rpc原理与实现
Rpc原理与实现Rpc原理与实现
Rpc原理与实现
 
Java API for WebSocket 實作介紹
Java API for WebSocket 實作介紹Java API for WebSocket 實作介紹
Java API for WebSocket 實作介紹
 
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革
 
Apache配置文件说明
Apache配置文件说明Apache配置文件说明
Apache配置文件说明
 
Mysql Replication
Mysql ReplicationMysql Replication
Mysql Replication
 
RESTful
RESTfulRESTful
RESTful
 
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探
 
Cent os 安装 subversion
Cent os 安装 subversionCent os 安装 subversion
Cent os 安装 subversion
 
Apache与tomcat的三种连接方式
Apache与tomcat的三种连接方式Apache与tomcat的三种连接方式
Apache与tomcat的三种连接方式
 
-Nginx book
 -Nginx book -Nginx book
-Nginx book
 
Apache trafficserver
Apache trafficserverApache trafficserver
Apache trafficserver
 
Hadoop监控
Hadoop监控Hadoop监控
Hadoop监控
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
Aswan&hump
Aswan&humpAswan&hump
Aswan&hump
 
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理
 
The Rails 4 Way Chapter 1
The Rails 4 Way Chapter 1The Rails 4 Way Chapter 1
The Rails 4 Way Chapter 1
 

Similar a Php Webservers

高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
ideawu
 
Apache服务器配置全攻略
Apache服务器配置全攻略Apache服务器配置全攻略
Apache服务器配置全攻略
Yiwei Ma
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
Wade Huang
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
 
OpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniterOpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniter
Hung-yu Lin
 
线程编程方面
线程编程方面线程编程方面
线程编程方面
yiditushe
 
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践
longhao
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
yiditushe
 
Nginx+常见应用技术指南
Nginx+常见应用技术指南Nginx+常见应用技术指南
Nginx+常见应用技术指南
andy54321
 

Similar a Php Webservers (20)

高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
 
Apache服务器配置全攻略
Apache服务器配置全攻略Apache服务器配置全攻略
Apache服务器配置全攻略
 
大话Php之性能
大话Php之性能大话Php之性能
大话Php之性能
 
高性能LAMP程序设计
高性能LAMP程序设计高性能LAMP程序设计
高性能LAMP程序设计
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
 
Html5
Html5Html5
Html5
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
Node.js长连接开发实践
Node.js长连接开发实践Node.js长连接开发实践
Node.js长连接开发实践
 
Exodus2 大局观
Exodus2 大局观Exodus2 大局观
Exodus2 大局观
 
OpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniterOpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniter
 
线程编程方面
线程编程方面线程编程方面
线程编程方面
 
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek
 
摘星
摘星摘星
摘星
 
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
Nginx+常见应用技术指南
Nginx+常见应用技术指南Nginx+常见应用技术指南
Nginx+常见应用技术指南
 
deep inside Sina App Engine cloud service
deep inside Sina App Engine cloud servicedeep inside Sina App Engine cloud service
deep inside Sina App Engine cloud service
 

Más de thinkinlamp (20)

数据仓库
数据仓库数据仓库
数据仓库
 
对My sql dba的一些思考
对My sql dba的一些思考对My sql dba的一些思考
对My sql dba的一些思考
 
云端的数据库
云端的数据库云端的数据库
云端的数据库
 
My sql innovation work -innosql
My sql innovation work -innosqlMy sql innovation work -innosql
My sql innovation work -innosql
 
浅谈 My sql 性能调优
浅谈 My sql 性能调优浅谈 My sql 性能调优
浅谈 My sql 性能调优
 
2011 06-12-why do we need the rabbit
2011 06-12-why do we need the rabbit2011 06-12-why do we need the rabbit
2011 06-12-why do we need the rabbit
 
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江
 
蜘蛛
蜘蛛蜘蛛
蜘蛛
 
大型微博应用Feed系统浅析
大型微博应用Feed系统浅析大型微博应用Feed系统浅析
大型微博应用Feed系统浅析
 
Enterprise connect
Enterprise connectEnterprise connect
Enterprise connect
 
I os tech talk 观后感
I os tech talk 观后感I os tech talk 观后感
I os tech talk 观后感
 
网页游戏开发与敏捷开发
网页游戏开发与敏捷开发网页游戏开发与敏捷开发
网页游戏开发与敏捷开发
 
My sql自动化监控
My sql自动化监控My sql自动化监控
My sql自动化监控
 
服务化的网站架构
服务化的网站架构服务化的网站架构
服务化的网站架构
 
大型互联网应用架构设计
大型互联网应用架构设计大型互联网应用架构设计
大型互联网应用架构设计
 
Php extension开发
Php extension开发Php extension开发
Php extension开发
 
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
 
大型Sns数据库设计
大型Sns数据库设计大型Sns数据库设计
大型Sns数据库设计
 
MySQL高可用
MySQL高可用MySQL高可用
MySQL高可用
 
Mysql overview_20100811
Mysql overview_20100811Mysql overview_20100811
Mysql overview_20100811
 

Php Webservers

  • 1. PHP & Web Servers -- 大罗 (Rollenc)
  • 2.
  • 4. Apache Request Circle(1) 1 、 Post-Read-Request 阶段 在正常请求处理流程中,这是模块可以插入钩子的第一个阶段。 对于那些想很早进入处理请求的模块来说,这个阶段可以被利用。 2 、 URI Translation 阶段 Apache 在本阶段的主要工作:将请求的 URL 映射到本地文件系统。 模块可以在这阶段插入钩子,执行自己的映射逻辑。 mod_alias 就是利用这个阶段工作的。 3 、 Header Parsing 阶段 Apache 在本阶段的主要工作:检查请求的头部。由于模块可以在请求 处理流程的任何一个点上执行检查请求头部的任务,因此这个钩子很少被使用。 mod_setenvif 就是利用这个阶段工作的。
  • 5. Apache  Request Circle(2) 4 、 Access Control 阶段 Apache 在本阶段的主要工作:根据配置文件检查是否允许访问请求的资源。 Apache 的标准逻辑实现了允许和拒绝指令。 mod_authz_host 就是利用这个阶段工作的。 5 、 Authentication 阶段 Apache 在本阶段的主要工作:按照配置文件设定的策略对用户进行认证, 并设定用户名区域。模块可以在这阶段插入钩子,实现一个认证方法。 6 、 Authorization 阶段 Apache 在本阶段的主要工作:根据配置文件检查是否允许认证过的用户 执行请求的操作。模块可以在这阶段插入钩子,实现一个用户权限管理的方法。
  • 6. Apache Request Circle(3) 7 、 MIME Type Checking 阶段 Apache 在本阶段的主要工作:根据请求资源的 MIME 类型的相关规则,判定 将要使用的内容处理函数。标准模块 mod_negotiation 和 mod_mime 实现了这个钩子。 8 、 FixUp 阶段 这是一个通用的阶段,允许模块在内容生成器之前,运行任何必要的处理流程。 和 Post_Read_Request 类似,这是一个能够捕获任何信息的钩子, 也是最常使用的钩子。 9 、 Response 阶段 Apache 在本阶段的主要工作:生成返回客户端的内容,负责给客户端发送 一个恰当的回复。这个阶段是整个处理流程的核心部分。
  • 7. Apache Request Circle(4) 10 、 Logging 阶段 Apache 在本阶段的主要工作:在回复已经发送给客户端之后记录事务。 模块可能修改或者替换 Apache 的标准日志记录。 11 、 CleanUp 阶段 Apache 在本阶段的主要工作:清理本次请求事务处理完成之后遗留的环境, 比如文件、目录的处理或者 Socket 的关闭等等,这是 Apache 一次请求处理 的最后一个阶段。
  • 8.
  • 9.
  • 10.
  • 11. mpm This Multi-Processing Module (MPM) implements a hybrid multi-process multi-threaded server. By using threads to serve requests, it is able to serve a large number of requests with less system resources than a process-based server. Yet it retains much of the stability of a process-based server by keeping multiple processes available, each with many threads.
  • 13. mpm_worker 支持多线程和多进程混合模型的 MPM 线程 * 进程 单进程内存暂用约: 2.1M ~ 4.3M PHP 部分模块是非线程安全
  • 14.   FastCGI  建立一个 HTTP/Socket ,和 webserver 交互 + Apache/Nginx/lighttpd
  • 15.
  • 16.
  • 17. Start a FastCGI /usr/bin/php-cgi -q -b localhost:9000  (2.1M) /usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000    -C 2 -u www-data -f /usr/bin/php5-cgi  (2.4M)
  • 18. Apache + FastCGI 1. Apache mod_fastcgi AddHandler fcgid-script .php Options +ExecCGI FcgidWrapper /usr/local/bin/php-wrapper .php 2. Apache mod_fcgid AddHandler fastcgi-script php
  • 19.
  • 20.
  • 21. Diff 1. Apache && Nginx 输出有 Buffer      堵塞 render 函数 2. Lighttpd 无 buffer      别输出大数据量,比如      echo file_get_contents($bigfile);
  • 22.
  • 23. Q & A