Enviar búsqueda
Cargar
PHP 的 Web 運行原理 - 非阻塞 I/O 模式
•
0 recomendaciones
•
140 vistas
建
建億 林
Seguir
PHP 的 Web 運行原理 - 非阻塞 I/O 模式
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 53
Descargar ahora
Descargar para leer sin conexión
Recomendados
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011
Yiwei Ma
大话Php之性能
大话Php之性能
liqiang xu
Ruby rails分享
Ruby rails分享
Cam Song
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
Recomendados
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011
Yiwei Ma
大话Php之性能
大话Php之性能
liqiang xu
Ruby rails分享
Ruby rails分享
Cam Song
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
漫谈php和java
漫谈php和java
sulong
Hadoop ecosystem
Hadoop ecosystem
legend900805
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
Html5
Html5
cazhfe
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
Nodejs异步的原理和缺陷
Nodejs异步的原理和缺陷
mysqlops
introduction of web 2.0
introduction of web 2.0
soboring
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
yczealot
Más contenido relacionado
Similar a PHP 的 Web 運行原理 - 非阻塞 I/O 模式
Phalcon phpconftw2012
Phalcon phpconftw2012
Rack Lin
漫谈php和java
漫谈php和java
sulong
Hadoop ecosystem
Hadoop ecosystem
legend900805
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
Html5
Html5
cazhfe
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
Nodejs异步的原理和缺陷
Nodejs异步的原理和缺陷
mysqlops
introduction of web 2.0
introduction of web 2.0
soboring
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
yczealot
Similar a 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
Descargar ahora