天天看点

easyswoole和mixphp_韩天峰 - Swoole4-全新的PHP编程模式

1.Swoole 4.0 ‫ܐ‬ᑕ ‫ق‬ෛጱPHPᖫᑕཛྷୗ @hantianfeng Rango-ᶥॠશ

2.‫ړ‬Ձٖ਻ 一. Go + Chan 全新协程编程模式 二. Swoole 4.0 新版本协程实现原理 三. Swoft 协程框架的使用

3.01 Swoole 4.0

4.•  串行编程 •  fun1 要等待 fun2 执行完毕 •  总耗时 2 秒 •  如何实现并发编程?

5.创建 回收 通信方式 资源消耗 并发能力 编程难度 多进程 fork wait IPC 进程间通信 进程切换开销 数百 困难 多线程 pthread_create pthread_join 数据同步/锁 进程切换开销 数千 非常困难

6.Coroutine

7.创建 回收 通信方式 资源消耗 并发能力 编程难度 多进程 fork wait IPC 进程间通信 进程切换开销 数百 困难 多线程 pthread_create pthread_join 数据同步/锁 进程切换开销 数千 非常困难 协程 go array/chan 非常低 50万 容易

8.•  并发编程 •  fun1 和 fun2 并发执行 •  总耗时 1 秒

9.

10.创建 Socket 绑定端口并监听 Accept 连接 创建新的协程处理 接收数据并响应 协程退出

11.‫ܐ‬ᑕ 1.  用户态线程,遇到 IO 主动让出 2.  PHP 代码依然是串行执行的,无需加锁 3.  开销极低,仅占用内存,不存在进程/线程切换开销 4.  并发量大,单个进程可开启 50W 个协程 5.  随时随地,只要你想并发,就调用 go 创建新协程

12.

13.SplQueue new SplQueue $queue->push $queue->pop push 永远可用,持续写内存 pop 无可用数据时返回 false Chan new chan() 缓存/无缓存 $chan->push $chan->pop push 容量不足是挂起协程 pop 无可用数据时挂起协程

14.᭗᭲ 1.  数据流转 2.  协程管理 3.  并发依赖管理 4.  多个 chan 可以使用chan::select进行读写判断

15.Http 请求 Http 请求 发送响应

16.协程组件 Co\Socket 说明 Socket 的封装 Co\Client TCP/UDP/UnixSocket客户端 Co\Http\Client Http和WebSocket客户端 Co\Http2\Client Http2客户端 Co\MySQL MySQL客户端 Co\Redis Redis客户端Co::sleep睡眠Co::readFile/Writefile读写文件 同步阻塞 API Sockets/Stream Sockets/Stream CURL/file_get_contents CURL/GRPC mysqli/PDO redis usleep/sleep fread/fwrite

17.02 协程实现

18.2.0 setjmp/longjmp 3.0 EG(vm_interrupt) 4.0 libco

19.Swoole 2.0 ޾ 3.0 ጱੴᴴ௔ 1.  不支持 call_user_func, array_map, 魔术方法,反射方法 2.  不支持扩展 zend_call_function 3.  很多第三方库,使用了复杂的设计模式,不可控

20.Swoole 4.0 1.  100% 支持所有 PHP 语法,包括魔术方法、反射、call_func 2.  完整的 C 栈 (基于微信开源的 libco)+ PHP 栈 3.  前置 SysCall Hook,可将 PHP 的同步客户端,如 mysqli/ pdo/file_get_contents/sleep/fread 无缝切换为协程模式 (Swoole 5.0)

21.

22.swoole_coroutine.cc •  co_create •  co_yield •  co_resume •  co_close

23.03 Swoft 框架

24.Swoft 1.  完全基于 Swoole 的纯协程框架 2.  Composer 组件化,完全遵循 PSR 规范 3.  依赖注入,容器,组件,连接池,AOP(面向切面编程) 4.  支持 Web 开发、微服务治理 5.  Docker 支持

25.

26.Swoft 支持的服务器 1.  swoft-http-srever :高并发纯协程 Web 应用程序 2.  swoft-websocket-server :长连接通信服务器 3.  swoft-rpc-server :微服务治理

27.

28.

29.控制器与 URL 映射 URL 路由 GET 参数映射

30.Swoft 微服务 1.  服务熔断 2.  服务降级 3.  服务注册与发现(基于 consul) 4.  负载均衡

31.Swoft EasySwoole Swoole 框 架 PHP-MSF SwooleDistributed

32.Blink ZPHP Swoole 框架 GroupCo FastD

33.MixPHP LaravelS Swoole 框架 Yii-Swoole Yaf-Swoole

34.THANK YOU PHPCON ਥᗑғwww.phpconchina.com ‫ق‬᮱ PPT ӥ᫹ғhttps://github.com/ThinkDevelopers/PHPConChina- ๗இٚᥠ- Q & A ਥොQQᗭғ34449228̵135615537 ਥො‫ل‬ռ‫ݩ‬ғThinkInLAMP