狠狠撸

狠狠撸Share a Scribd company logo
PHP & Web Servers -- 大罗 (Rollenc)
Directory Request Circle Apache & php_mod? php_mod Circle mpm & mpm_prefork FastCGI Start a FastCGI FastCGI with?mpm_worker Nginx & LightHTD
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) NGX_HTTP_POST_READ_PHASE ? ? ? ?// 读取请求阶段 NGX_HTTP_SERVER_REWRITE_PHASE ? ?//Server?URI 转换阶段 NGX_HTTP_FIND_CONFIG_PHASE ? ? ? ? // 查找相应的配置来执行阶段 NGX_HTTP_REWRITE_PHASE ? ? ? ? ? ? ? //URI 转换阶段 NGX_HTTP_POST_REWRITE_PHASE ? ? ?// 对转换后的 URL 结果进行处理的阶段 NGX_HTTP_PREACCESS_PHASE ? ? ? ? ? // 权限检查准备阶段
Nginx Request Circle(2) NGX_HTTP_ACCESS_PHASE ? ? ? ? ? ? ? ?// 权限检查阶段 NGX_HTTP_POST_ACCESS_PHASE ? ? ? // 对权限检查结果进行处理阶段 NGX_HTTP_TRY_FILES_PHASE ? ? ? ? ? ?// 处理配置中的 try_files 阶段 NGX_HTTP_CONTENT_PHASE ? ? ? ? ? ? // 处理生成返回数据阶段 NGX_HTTP_LOG_PHASE ? ? ? ? ? ? ? ? ? ?// 记录日志处理阶段,具体说明应当是请求完成后,关闭请求时处理
php_mod Circle 1 、 Apache 接收请求。 2 、 Apache 传递请求给 mod_php 。 3 、 mod_php 定位磁盘文件,并加载到内存中。 4 、 mod_php 编译源代码成为 opcode 树。 (APC) 5 、 mod_php 执行 opcode 树。
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 静态文件处理: 通过 sendfile 接口 ,? 把这个请求委托给操作系统内核处理 . sendfile() 是作用于数据拷贝在两个文件描述符之间的操作函数 . 这个拷贝操作是内核中操作的 , 所以称为 " 零拷贝 ".sendfile 函数比起 read 和 write 函数高效得多 , 因为 read 和 write 是要把数据拷贝到用户应用层操作 .
FastCgi Circle Web ?Server 建立  FastCGI  程序处理需求。  FastCGI  程序可以在启动时就被建立,也可以等到召唤时才建立。 FastCGI  程序建立后,先初始本身状态,接著等待一個來自  Web??Server 的连接。 当  client  的需求來到時,  Web??Server 就建立一条到  FastCGI 程序间的连接,并将  CGI  环境变量及标准環境變數及標準輸入的資料送入該連線。 FastCGI  程序則將標準輸出及標準錯誤的資料,透過同一條連線送 回給伺服器。 當  FastCGI  程序關閉這條連線後,才表示需求處理完畢,  FastCGI  程序則繼續等待其他的連線。
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 # Vhosts fastcgi config fastcgi_pass ?127.0.0.1:9000; fastcgi_index index.php; location ~ \.php$ { include ? ? ? ?/etc/nginx/fastcgi.conf; fastcgi_param ?SCRIPT_FILENAME ?/home/rollenc/luochunhui.com/web/$fastcgi_script_name; }
Nginx & LightTPD 读取准备: epoll  是为处理大批量句柄而作了改进的 poll 。 三个系统调用: epoll_create(2) ,  epoll_ctl(2) ,  epoll_wait(2) 。 epoll 仅仅是一个异步事件的通知机制,其本身并不作任何的 IO 读写操作,它只负责告诉你是不是可以读或可以写 了,而具体的读写操作,还要应用层自己来作。
Diff 1. Apache && Nginx  输出有 Buffer ?? ? 堵塞 render 函数 2. Lighttpd  无 buffer ?? ? 别输出大数据量,比如  ?? ? echo file_get_contents($bigfile);
Ref Nginx  的中文维基  http://wiki.nginx.org/NginxChs 啃饼的技术博客  http://blog.csdn.net/kenbinzhang Apache 服务的工作原理  http://blog.tianya.cn/blogger/post_show.asp?BlogID=40003&PostID=4585547 netpet( 凌晓 ) 的博客  http://blog.csdn.net/netpet/default.aspx?PageNumber=2 Emiller 的 Nginx 模块开发指南 中文草稿  http://yaoweibin.cn/maindoc/nginx-modules-guide-cn.pdf? 浪湾 (langwan) ?http://hi./langwan/blog/category/%D4%B4%C2%EB%B7%D6%CE%F6 Multi-Processing Modules (MPMs) http://httpd.apache.org/docs/2.0/mpm.html Apache Worker and PHP  http://brian.moonspot.net/2008/02/13/apache-worker-and-php/ Google: http://www.google.com/
Q & A ?
Thanks

More Related Content

What's hot (19)

惭测蝉辩濒展示功能与源码对应
惭测蝉辩濒展示功能与源码对应惭测蝉辩濒展示功能与源码对应
惭测蝉辩濒展示功能与源码对应
zhaolinjnu
?
PHP 應用之一 socket funion : 偽 WEB Server
PHP 應用之一 socket funion : 偽 WEB ServerPHP 應用之一 socket funion : 偽 WEB Server
PHP 應用之一 socket funion : 偽 WEB Server
志賢 黃
?
贰尝碍日志分析搭建过程文档
贰尝碍日志分析搭建过程文档贰尝碍日志分析搭建过程文档
贰尝碍日志分析搭建过程文档
果 果
?
搁辫肠原理与实现
搁辫肠原理与实现搁辫肠原理与实现
搁辫肠原理与实现
wavefly
?
Java API for WebSocket 實作介紹
Java API for WebSocket 實作介紹Java API for WebSocket 實作介紹
Java API for WebSocket 實作介紹
My own sweet home!
?
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革
Gelis Wu
?
础辫补肠丑别配置文件说明
础辫补肠丑别配置文件说明础辫补肠丑别配置文件说明
础辫补肠丑别配置文件说明
wensheng wei
?
RESTful
RESTfulRESTful
RESTful
PingLun Liao
?
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探
Gelis Wu
?
Cent os 安装 subversion
Cent os 安装 subversionCent os 安装 subversion
Cent os 安装 subversion
YUCHENG HU
?
础辫补肠丑别与迟辞尘肠补迟的叁种连接方式
础辫补肠丑别与迟辞尘肠补迟的叁种连接方式础辫补肠丑别与迟辞尘肠补迟的叁种连接方式
础辫补肠丑别与迟辞尘肠补迟的叁种连接方式
xddong77
?
Apache trafficserver
Apache trafficserverApache trafficserver
Apache trafficserver
Din Dindin
?
贬补诲辞辞辫监控
贬补诲辞辞辫监控贬补诲辞辞辫监控
贬补诲辞辞辫监控
snakebbf
?
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
Larry Cai
?
使用搁辫尘&补尘辫;测耻尘进行基础软件管理
使用搁辫尘&补尘辫;测耻尘进行基础软件管理使用搁辫尘&补尘辫;测耻尘进行基础软件管理
使用搁辫尘&补尘辫;测耻尘进行基础软件管理
haiyuan ning
?
The Rails 4 Way Chapter 1
The Rails 4 Way Chapter 1The Rails 4 Way Chapter 1
The Rails 4 Way Chapter 1
Drake Huang
?
惭测蝉辩濒展示功能与源码对应
惭测蝉辩濒展示功能与源码对应惭测蝉辩濒展示功能与源码对应
惭测蝉辩濒展示功能与源码对应
zhaolinjnu
?
PHP 應用之一 socket funion : 偽 WEB Server
PHP 應用之一 socket funion : 偽 WEB ServerPHP 應用之一 socket funion : 偽 WEB Server
PHP 應用之一 socket funion : 偽 WEB Server
志賢 黃
?
贰尝碍日志分析搭建过程文档
贰尝碍日志分析搭建过程文档贰尝碍日志分析搭建过程文档
贰尝碍日志分析搭建过程文档
果 果
?
搁辫肠原理与实现
搁辫肠原理与实现搁辫肠原理与实现
搁辫肠原理与实现
wavefly
?
Java API for WebSocket 實作介紹
Java API for WebSocket 實作介紹Java API for WebSocket 實作介紹
Java API for WebSocket 實作介紹
My own sweet home!
?
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革
Gelis Wu
?
础辫补肠丑别配置文件说明
础辫补肠丑别配置文件说明础辫补肠丑别配置文件说明
础辫补肠丑别配置文件说明
wensheng wei
?
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探
Gelis Wu
?
Cent os 安装 subversion
Cent os 安装 subversionCent os 安装 subversion
Cent os 安装 subversion
YUCHENG HU
?
础辫补肠丑别与迟辞尘肠补迟的叁种连接方式
础辫补肠丑别与迟辞尘肠补迟的叁种连接方式础辫补肠丑别与迟辞尘肠补迟的叁种连接方式
础辫补肠丑别与迟辞尘肠补迟的叁种连接方式
xddong77
?
Apache trafficserver
Apache trafficserverApache trafficserver
Apache trafficserver
Din Dindin
?
贬补诲辞辞辫监控
贬补诲辞辞辫监控贬补诲辞辞辫监控
贬补诲辞辞辫监控
snakebbf
?
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
Larry Cai
?
使用搁辫尘&补尘辫;测耻尘进行基础软件管理
使用搁辫尘&补尘辫;测耻尘进行基础软件管理使用搁辫尘&补尘辫;测耻尘进行基础软件管理
使用搁辫尘&补尘辫;测耻尘进行基础软件管理
haiyuan ning
?
The Rails 4 Way Chapter 1
The Rails 4 Way Chapter 1The Rails 4 Way Chapter 1
The Rails 4 Way Chapter 1
Drake Huang
?

Viewers also liked (8)

Dicionário de políticaDicionário de política
Dicionário de política
CarlaRosario
?
宝岛蚕1方案11.16
宝岛蚕1方案11.16宝岛蚕1方案11.16
宝岛蚕1方案11.16
samon127
?
面向搜索引擎的友好程序开发
面向搜索引擎的友好程序开发面向搜索引擎的友好程序开发
面向搜索引擎的友好程序开发
samon127
?
Dicionário digitalDicionário digital
Dicionário digital
CarlaRosario
?
基于架构的开发模式
基于架构的开发模式基于架构的开发模式
基于架构的开发模式
samon127
?
Dicionário de políticaDicionário de política
Dicionário de política
CarlaRosario
?
Set 3-kertas-2-sains-pmr-sederhana
Set 3-kertas-2-sains-pmr-sederhanaSet 3-kertas-2-sains-pmr-sederhana
Set 3-kertas-2-sains-pmr-sederhana
Linda Mahmood
?
Dicionário de políticaDicionário de política
Dicionário de política
CarlaRosario
?
宝岛蚕1方案11.16
宝岛蚕1方案11.16宝岛蚕1方案11.16
宝岛蚕1方案11.16
samon127
?
面向搜索引擎的友好程序开发
面向搜索引擎的友好程序开发面向搜索引擎的友好程序开发
面向搜索引擎的友好程序开发
samon127
?
Dicionário digitalDicionário digital
Dicionário digital
CarlaRosario
?
基于架构的开发模式
基于架构的开发模式基于架构的开发模式
基于架构的开发模式
samon127
?
Dicionário de políticaDicionário de política
Dicionário de política
CarlaRosario
?
Set 3-kertas-2-sains-pmr-sederhana
Set 3-kertas-2-sains-pmr-sederhanaSet 3-kertas-2-sains-pmr-sederhana
Set 3-kertas-2-sains-pmr-sederhana
Linda Mahmood
?

Similar to Php Webservers (20)

高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕
ideawu
?
础辫补肠丑别服务器配置全攻略
础辫补肠丑别服务器配置全攻略础辫补肠丑别服务器配置全攻略
础辫补肠丑别服务器配置全攻略
Yiwei Ma
?
大话笔丑辫之性能
大话笔丑辫之性能大话笔丑辫之性能
大话笔丑辫之性能
liqiang xu
?
PHP運作原理 主要介紹PHP程式語言建構WEB 架構,其運作原理及網站製作架構技術說明。
PHP運作原理 主要介紹PHP程式語言建構WEB 架構,其運作原理及網站製作架構技術說明。PHP運作原理 主要介紹PHP程式語言建構WEB 架構,其運作原理及網站製作架構技術說明。
PHP運作原理 主要介紹PHP程式語言建構WEB 架構,其運作原理及網站製作架構技術說明。
mengandli
?
高性能尝础惭笔程序设计
高性能尝础惭笔程序设计高性能尝础惭笔程序设计
高性能尝础惭笔程序设计
fuchaoqun
?
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
Wade Huang
?
Html5
Html5Html5
Html5
cazhfe
?
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
chang kuo-chao
?
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
?
狈辞诲别.箩蝉长连接开发实践
狈辞诲别.箩蝉长连接开发实践狈辞诲别.箩蝉长连接开发实践
狈辞诲别.箩蝉长连接开发实践
longhao
?
OpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniterOpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniter
Hung-yu Lin
?
线程编程方面
线程编程方面线程编程方面
线程编程方面
yiditushe
?
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek
Johnson Gau
?
摘星
摘星摘星
摘星
zenyuhao
?
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践
longhao
?
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
yiditushe
?
狈辞诲别闯厂基础教学&补尘辫;介绍
狈辞诲别闯厂基础教学&补尘辫;介绍狈辞诲别闯厂基础教学&补尘辫;介绍
狈辞诲别闯厂基础教学&补尘辫;介绍
GO LL
?
狈驳颈苍虫+常见应用技术指南
狈驳颈苍虫+常见应用技术指南狈驳颈苍虫+常见应用技术指南
狈驳颈苍虫+常见应用技术指南
andy54321
?
高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕
ideawu
?
础辫补肠丑别服务器配置全攻略
础辫补肠丑别服务器配置全攻略础辫补肠丑别服务器配置全攻略
础辫补肠丑别服务器配置全攻略
Yiwei Ma
?
大话笔丑辫之性能
大话笔丑辫之性能大话笔丑辫之性能
大话笔丑辫之性能
liqiang xu
?
PHP運作原理 主要介紹PHP程式語言建構WEB 架構,其運作原理及網站製作架構技術說明。
PHP運作原理 主要介紹PHP程式語言建構WEB 架構,其運作原理及網站製作架構技術說明。PHP運作原理 主要介紹PHP程式語言建構WEB 架構,其運作原理及網站製作架構技術說明。
PHP運作原理 主要介紹PHP程式語言建構WEB 架構,其運作原理及網站製作架構技術說明。
mengandli
?
高性能尝础惭笔程序设计
高性能尝础惭笔程序设计高性能尝础惭笔程序设计
高性能尝础惭笔程序设计
fuchaoqun
?
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
Wade Huang
?
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
國昭 張
?
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
?
狈辞诲别.箩蝉长连接开发实践
狈辞诲别.箩蝉长连接开发实践狈辞诲别.箩蝉长连接开发实践
狈辞诲别.箩蝉长连接开发实践
longhao
?
OpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniterOpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniter
Hung-yu Lin
?
线程编程方面
线程编程方面线程编程方面
线程编程方面
yiditushe
?
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek
Johnson Gau
?
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践
longhao
?
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
yiditushe
?
狈辞诲别闯厂基础教学&补尘辫;介绍
狈辞诲别闯厂基础教学&补尘辫;介绍狈辞诲别闯厂基础教学&补尘辫;介绍
狈辞诲别闯厂基础教学&补尘辫;介绍
GO LL
?
狈驳颈苍虫+常见应用技术指南
狈驳颈苍虫+常见应用技术指南狈驳颈苍虫+常见应用技术指南
狈驳颈苍虫+常见应用技术指南
andy54321
?

Recently uploaded (7)

原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
oybyk
?
原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
oybyk
?
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
oybyk
?
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
oybyk
?
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
oybyk
?
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
oybyk
?
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
oybyk
?
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
oybyk
?
原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
oybyk
?
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
oybyk
?
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
oybyk
?
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
oybyk
?
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
oybyk
?
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
oybyk
?

Php Webservers

  • 1. PHP & Web Servers -- 大罗 (Rollenc)
  • 2. Directory Request Circle Apache & php_mod? php_mod Circle mpm & mpm_prefork FastCGI Start a FastCGI FastCGI with?mpm_worker Nginx & LightHTD
  • 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. Nginx Request Circle(1) NGX_HTTP_POST_READ_PHASE ? ? ? ?// 读取请求阶段 NGX_HTTP_SERVER_REWRITE_PHASE ? ?//Server?URI 转换阶段 NGX_HTTP_FIND_CONFIG_PHASE ? ? ? ? // 查找相应的配置来执行阶段 NGX_HTTP_REWRITE_PHASE ? ? ? ? ? ? ? //URI 转换阶段 NGX_HTTP_POST_REWRITE_PHASE ? ? ?// 对转换后的 URL 结果进行处理的阶段 NGX_HTTP_PREACCESS_PHASE ? ? ? ? ? // 权限检查准备阶段
  • 9. Nginx Request Circle(2) NGX_HTTP_ACCESS_PHASE ? ? ? ? ? ? ? ?// 权限检查阶段 NGX_HTTP_POST_ACCESS_PHASE ? ? ? // 对权限检查结果进行处理阶段 NGX_HTTP_TRY_FILES_PHASE ? ? ? ? ? ?// 处理配置中的 try_files 阶段 NGX_HTTP_CONTENT_PHASE ? ? ? ? ? ? // 处理生成返回数据阶段 NGX_HTTP_LOG_PHASE ? ? ? ? ? ? ? ? ? ?// 记录日志处理阶段,具体说明应当是请求完成后,关闭请求时处理
  • 10. php_mod Circle 1 、 Apache 接收请求。 2 、 Apache 传递请求给 mod_php 。 3 、 mod_php 定位磁盘文件,并加载到内存中。 4 、 mod_php 编译源代码成为 opcode 树。 (APC) 5 、 mod_php 执行 opcode 树。
  • 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. Nginx & LightTPD 静态文件处理: 通过 sendfile 接口 ,? 把这个请求委托给操作系统内核处理 . sendfile() 是作用于数据拷贝在两个文件描述符之间的操作函数 . 这个拷贝操作是内核中操作的 , 所以称为 " 零拷贝 ".sendfile 函数比起 read 和 write 函数高效得多 , 因为 read 和 write 是要把数据拷贝到用户应用层操作 .
  • 16. FastCgi Circle Web ?Server 建立 FastCGI 程序处理需求。 FastCGI 程序可以在启动时就被建立,也可以等到召唤时才建立。 FastCGI 程序建立后,先初始本身状态,接著等待一個來自 Web??Server 的连接。 当 client 的需求來到時, Web??Server 就建立一条到 FastCGI 程序间的连接,并将 CGI 环境变量及标准環境變數及標準輸入的資料送入該連線。 FastCGI 程序則將標準輸出及標準錯誤的資料,透過同一條連線送 回給伺服器。 當 FastCGI 程序關閉這條連線後,才表示需求處理完畢, FastCGI 程序則繼續等待其他的連線。
  • 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. Nginx + FastCGI # Vhosts fastcgi config fastcgi_pass ?127.0.0.1:9000; fastcgi_index index.php; location ~ \.php$ { include ? ? ? ?/etc/nginx/fastcgi.conf; fastcgi_param ?SCRIPT_FILENAME ?/home/rollenc/luochunhui.com/web/$fastcgi_script_name; }
  • 20. Nginx & LightTPD 读取准备: epoll 是为处理大批量句柄而作了改进的 poll 。 三个系统调用: epoll_create(2) , epoll_ctl(2) , epoll_wait(2) 。 epoll 仅仅是一个异步事件的通知机制,其本身并不作任何的 IO 读写操作,它只负责告诉你是不是可以读或可以写 了,而具体的读写操作,还要应用层自己来作。
  • 21. Diff 1. Apache && Nginx 输出有 Buffer ?? ? 堵塞 render 函数 2. Lighttpd 无 buffer ?? ? 别输出大数据量,比如 ?? ? echo file_get_contents($bigfile);
  • 22. Ref Nginx 的中文维基 http://wiki.nginx.org/NginxChs 啃饼的技术博客 http://blog.csdn.net/kenbinzhang Apache 服务的工作原理 http://blog.tianya.cn/blogger/post_show.asp?BlogID=40003&PostID=4585547 netpet( 凌晓 ) 的博客 http://blog.csdn.net/netpet/default.aspx?PageNumber=2 Emiller 的 Nginx 模块开发指南 中文草稿 http://yaoweibin.cn/maindoc/nginx-modules-guide-cn.pdf? 浪湾 (langwan) ?http://hi./langwan/blog/category/%D4%B4%C2%EB%B7%D6%CE%F6 Multi-Processing Modules (MPMs) http://httpd.apache.org/docs/2.0/mpm.html Apache Worker and PHP http://brian.moonspot.net/2008/02/13/apache-worker-and-php/ Google: http://www.google.com/
  • 23. Q & A ?