swoole重点梳理

2018-04-23 14:39:40 949 思小齐 思小齐

常驻进程

不同于传统php-fpm架构,swoole是常驻进程的,
需要在命令行启动你的php程序.

事件驱动

底层使用epoll

连接池

一般的方法:
先从池子get,
用完后push放回池子.

由于 PHP-FPM 的阻塞等待的工作模型,一个请求会占用至少一个 MySQL 连接,多节点高并发下会产生大量的 MySQL 连接,而 MySQL 的最大连接数默认值为 100,尽管可以修改,但显而易见该模式没法很好的应对高并发的场景。

协程

新版本采用协程,取代老版本的异步.

编程模式

CSP编程模型

通道(Channel)是协程之间通信交换数据的唯一渠道, 而协程+通道的开发组合即为著名的CSP编程模型。

在Swoole开发中,Channel常用于连接池的实现和协程并发的调度。

运行时钩子

SwooleRuntime::enableCoroutine();

推荐使用.

自动把curl,pdo 等变成协程的.

在4.1.0版本中,底层增加一个新的特性,可以在运行时动态将基于php_stream实现的扩展、PHP网络客户端代码一键协程化。底层替换了ZendVM Stream的函数指针,所有使用php_stream进行socket操作均变成协程调度的异步IO。