Submit Search
Upload
PHP 的 Web 運行原理 - 非阻塞 I/O 模式
•
0 likes
•
141 views
建
建億 林
Follow
PHP 的 Web 運行原理 - 非阻塞 I/O 模式
Read less
Read more
Technology
Report
Share
Report
Share
1 of 53
Download now
Download to read offline
Recommended
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011
Yiwei Ma
大话Php之性能
大话Php之性能
liqiang xu
关于PHP,很多人的直观感觉是PHP是一种灵活的脚本语言,库类丰富,使用简单,安全,非常适合WEB开发,但性能低下。PHP的性能是否真的就如同大家的感觉一样的差呢?本文就是围绕这么一个话题来进行探讨的。从源码、应用场景、基准性能、对比分析等几个方面深入分析PHP之性能问题,通过真实的性能数据来说话,最终找出影响PHP模块性能的关键因素。
Ruby rails分享
Ruby rails分享
Cam Song
这是最近在公司部门内部分享的PPT,面向对Ruby没有基础或有丁点基础的同学。内容包含对Ruby和Rails的各种奇巧淫技。不求看后变成Master,只求看后能激起对Ruby和Rails的兴趣~ 我的博客:http://rubyer.me
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
hugo
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
ideawu
Php Webservers
Php Webservers
samon127
Php Webservers
Php Webservers
thinkinlamp
Phalcon the fastest php framework 阿土伯
Phalcon the fastest php framework 阿土伯
Hash Lin
Recommended
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011
Yiwei Ma
大话Php之性能
大话Php之性能
liqiang xu
关于PHP,很多人的直观感觉是PHP是一种灵活的脚本语言,库类丰富,使用简单,安全,非常适合WEB开发,但性能低下。PHP的性能是否真的就如同大家的感觉一样的差呢?本文就是围绕这么一个话题来进行探讨的。从源码、应用场景、基准性能、对比分析等几个方面深入分析PHP之性能问题,通过真实的性能数据来说话,最终找出影响PHP模块性能的关键因素。
Ruby rails分享
Ruby rails分享
Cam Song
这是最近在公司部门内部分享的PPT,面向对Ruby没有基础或有丁点基础的同学。内容包含对Ruby和Rails的各种奇巧淫技。不求看后变成Master,只求看后能激起对Ruby和Rails的兴趣~ 我的博客:http://rubyer.me
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
hugo
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
ideawu
Php Webservers
Php Webservers
samon127
Php Webservers
Php Webservers
thinkinlamp
Phalcon the fastest php framework 阿土伯
Phalcon the fastest php framework 阿土伯
Hash Lin
Phalcon phpconftw2012
Phalcon phpconftw2012
Rack Lin
Phalcon PHP Framework Introduction - phpconftw2012
漫谈php和java
漫谈php和java
sulong
Hadoop ecosystem
Hadoop ecosystem
legend900805
Brief introduction about Hadoop Ecosystem and its components,including hdfs, MapReduce,hbase,hive,zookeeper,pig,mahout and so on.
Ajax设计技术
Ajax设计技术
yiditushe
OpenWebSchool - 03 - PHP Part II
OpenWebSchool - 03 - PHP Part II
Hung-yu Lin
Hbase在淘宝的应用与优化 修改
Hbase在淘宝的应用与优化 修改
yp_fangdong
Head first in xmemcached yanf4j
Head first in xmemcached yanf4j
wavefly
memcache java client
Html5
Html5
cazhfe
it's my own ppt
J Ruby和Rails 让Ruby语言融入Java项目
J Ruby和Rails 让Ruby语言融入Java项目
George Ang
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
刘源 人人网服务化与架构变迁V3
刘源 人人网服务化与架构变迁V3
drewz lin
twMVC#18 | 專案分層架構
twMVC#18 | 專案分層架構
twMVC
介紹專案如何分層,專案架構又該如何規劃?看了一堆的文章也跟著範例作,卻仍然不得要領。上半場將會帶領大家如何著手進行專案的分層架構規劃與實作。
專案分層架構 twMVC#18
專案分層架構 twMVC#18
twMVC
介紹專案如何分層,專案架構又該如何規劃?看了一堆的文章也跟著範例作,卻仍然不得要領。上半場將會帶領大家如何著手進行專案的分層架構規劃與實作。
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
yiditushe
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
appollo0312
基于协程的网络开发框架的设计与实现
基于协程的网络开发框架的设计与实现
mysqlops
基于协程的网络开发框架的设计与实现
CodeIgniter 2.0.X
CodeIgniter 2.0.X
Bo-Yi Wu
OSSF 自由軟體鑄造場工作仿舉辦 CodeIgniter 2.0.X 講課上課投影片
Nodejs异步的原理和缺陷
Nodejs异步的原理和缺陷
mysqlops
Nodejs,异步, 原理,缺陷
introduction of web 2.0
introduction of web 2.0
soboring
introduction of web 2.0
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
yczealot
在
More Related Content
Similar to PHP 的 Web 運行原理 - 非阻塞 I/O 模式
Phalcon phpconftw2012
Phalcon phpconftw2012
Rack Lin
Phalcon PHP Framework Introduction - phpconftw2012
漫谈php和java
漫谈php和java
sulong
Hadoop ecosystem
Hadoop ecosystem
legend900805
Brief introduction about Hadoop Ecosystem and its components,including hdfs, MapReduce,hbase,hive,zookeeper,pig,mahout and so on.
Ajax设计技术
Ajax设计技术
yiditushe
OpenWebSchool - 03 - PHP Part II
OpenWebSchool - 03 - PHP Part II
Hung-yu Lin
Hbase在淘宝的应用与优化 修改
Hbase在淘宝的应用与优化 修改
yp_fangdong
Head first in xmemcached yanf4j
Head first in xmemcached yanf4j
wavefly
memcache java client
Html5
Html5
cazhfe
it's my own ppt
J Ruby和Rails 让Ruby语言融入Java项目
J Ruby和Rails 让Ruby语言融入Java项目
George Ang
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
刘源 人人网服务化与架构变迁V3
刘源 人人网服务化与架构变迁V3
drewz lin
twMVC#18 | 專案分層架構
twMVC#18 | 專案分層架構
twMVC
介紹專案如何分層,專案架構又該如何規劃?看了一堆的文章也跟著範例作,卻仍然不得要領。上半場將會帶領大家如何著手進行專案的分層架構規劃與實作。
專案分層架構 twMVC#18
專案分層架構 twMVC#18
twMVC
介紹專案如何分層,專案架構又該如何規劃?看了一堆的文章也跟著範例作,卻仍然不得要領。上半場將會帶領大家如何著手進行專案的分層架構規劃與實作。
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
yiditushe
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
appollo0312
基于协程的网络开发框架的设计与实现
基于协程的网络开发框架的设计与实现
mysqlops
基于协程的网络开发框架的设计与实现
CodeIgniter 2.0.X
CodeIgniter 2.0.X
Bo-Yi Wu
OSSF 自由軟體鑄造場工作仿舉辦 CodeIgniter 2.0.X 講課上課投影片
Nodejs异步的原理和缺陷
Nodejs异步的原理和缺陷
mysqlops
Nodejs,异步, 原理,缺陷
introduction of web 2.0
introduction of web 2.0
soboring
introduction of web 2.0
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
yczealot
在
Similar to PHP 的 Web 運行原理 - 非阻塞 I/O 模式
(20)
Phalcon phpconftw2012
Phalcon phpconftw2012
漫谈php和java
漫谈php和java
Hadoop ecosystem
Hadoop ecosystem
Ajax设计技术
Ajax设计技术
OpenWebSchool - 03 - PHP Part II
OpenWebSchool - 03 - PHP Part II
Hbase在淘宝的应用与优化 修改
Hbase在淘宝的应用与优化 修改
Head first in xmemcached yanf4j
Head first in xmemcached yanf4j
Html5
Html5
J Ruby和Rails 让Ruby语言融入Java项目
J Ruby和Rails 让Ruby语言融入Java项目
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
刘源 人人网服务化与架构变迁V3
刘源 人人网服务化与架构变迁V3
twMVC#18 | 專案分層架構
twMVC#18 | 專案分層架構
專案分層架構 twMVC#18
專案分層架構 twMVC#18
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
基于协程的网络开发框架的设计与实现
基于协程的网络开发框架的设计与实现
CodeIgniter 2.0.X
CodeIgniter 2.0.X
Nodejs异步的原理和缺陷
Nodejs异步的原理和缺陷
introduction of web 2.0
introduction of web 2.0
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
PHP 的 Web 運行原理 - 非阻塞 I/O 模式
1.
PHP 的 Web
運⾏行行原理理 ( 2 ) 非阻塞 I/O 模式
2.
傳統的 Web PHP
模式問題
3.
⾼高併發請求,會爆 ! 問題 1
:
4.
5.
服務如果是⼤大量量 I/O 操作會很浪費資 源
! ex. 讀 db 或 redis 啥的 問題 2 :
6.
7.
根源在於 : I/O 操作會
Blocking 住 Process
8.
⼤大量量 I/O 處理理⽅方案 Reactor
模式
9.
Reactor 模式基本上分為兩兩個部份 multiplexing 與
handler (多路路復⽤用處理理器) 與 ( 事件處理理 ) 多路路復⽤用的功能就是可以在⼀一個 process 裡,監控多個 socket。
10.
PHP 的 Reactor
模式實現 ReactPHP 與 Swoole
11.
ReactPHP
12.
ReactPHP 可以讓我們做到 1. 可以建立⼀一個非阻塞
I/O 的網路服務。 2. 可以建立⼀一個定時排程服務。
13.
它是如何解決⼤大量量 I/O blocking 的問題呢
?
14.
理理論它是 PHP 版的 Nodejs
15.
I/O 多路路復⽤用
16.
X timeout
17.
剛剛說是理理論上 PHP 版的 nodejs
18.
但實際上呢 ?
19.
這個 wait 記好 這個請求會得等很久 才會有回應
20.
這時如果我發兩兩條 http 請 求進來來會是什什麼結果呢
?
21.
Nodejs 2 個 wait
!
22.
reactPHP 1 個 wait
!
23.
為什什麼呢 ?
24.
因為它不會⾃自動幫你將 I/O 操作丟到 event
loop 中
25.
正確版
26.
27.
reactPHP ⼩小總結 1. 它是⼀一個提供事件驅動與非阻塞
I/O 操作的 library。 2. 它非阻塞 I/O 的實現在於 reactor 模式的 single process event loop 機制。 3. 注意,雖然它理理論上是 php 版的 nodejs,但實 際使⽤用是不⼀一樣的。
28.
Swoole
29.
event-driven asynchronous & coroutine-based
concurrency networking communication engine with high performance written in C and C++ for PHP.
30.
1. 可以建立⼀一個非阻塞 I/O
的網路服務。 2. 可以建立⼀一個定時排程服務。 Swoole 可以讓我們做到
31.
它是如何解決⼤大量量 I/O blocking 的問題呢
?
32.
pipe
33.
Worker 與 Task
Worker 有什什麼差別呢 ?
34.
Worker 1. 實際運⾏行行 PHP
代碼地⽅方 2. 接受由 Reactor 發送過來來的請求處理理 3. 可以異異步非阻塞與同步阻塞
35.
Task Worker 1. 實際運⾏行行
PHP 代碼地⽅方 2. 接受由 Worker 發送過來來的請求 3. 同步阻塞 4. 它適合處理理需要花時間的運算
36.
Worker 是如何做到異異步非 阻塞 I/O
操作呢 ?
37.
1. task worker
處理理阻塞 2. coroutine 協程 ( 推薦 ) ! 注意它不是使⽤用 event loop 機制 ! ( 但它有使⽤用 epoll 來來監控從 reactor 來來的 pipeline socket )
38.
範例例
39.
錯誤版
40.
41.
這時如果我發兩兩條 http 請 求進來來會是什什麼結果呢
?
42.
Swoole 1 個 wait
!
43.
⼀一樣是因為沒加入 event loop 嗎
? 是因為它只有⼀一個 worker
44.
正確版
45.
task worker 處理理阻塞
46.
47.
Coroutine 協程
48.
49.
Swoole ⼩小總結 1. 它是⼀一個使⽤用
c/c++ 寫的專⾨門⽤用來來建立網路路通 訊應⽤用的 php extension。 2. 它非阻塞 I/O 的實現在於 reactor 模式與協程 coroutine。 3. 實際時⽤用時,記得不是寫在它裡⾯面 I/O 就是 非阻塞操作,要⾃自已處理理。
50.
最後
51.
簡單比較 nodjes、reactPHP、swoole
52.
nodejs reactPHP swoole ⼤大量量
I/O 處理理模式 reactor reactor reactor 、 coroutine 架構 single process single process mutli process 易易⽤用度 淺 還⾏行行 難 web I/O 性能 優 優 更更優
53.
End
Download now