Swoole v6.0.0发布啦,一起来看看新特性🎉🎉🎉

大家好,Swoole v6.0.0也是在今天发布啦,在这里也是给大家列出这个版本的新特性,方便大家快速了解这个新版本。

多线程模式

Swoole v6.0.0带来了新的多线程模式,这模式需要在 php zts模式下,编译Swoole时开启--enable-swoole-thread。这样会将所有的多进程模式全部替换成多线程模式,实现多线程编程。

Swoole v6 要来了!即将增加多线程支持

Swoole v6 Alpha 版本已发布,为 PHP 带来稳定可靠、生产可用的多线程方案

使用 Swoole6 多线程实现一个聊天室程序

深度剖析 Swoole6 PHP 多线程实现原理

文件异步操作新引擎 - iouring

Swoole v6.0.0之前,文件异步操作是通过多线程实现的,文件并发数取决于线程数。Swoole v6.0.0之后,文件异步操作支持了iouring,可以依靠文件描述符,同时处理大量文件。效率和性能比多线程模式要优越的多。只需要安装liburing >= 2.5,编译编译Swoole时指定--enable-iouring就可以使用这个特性。
推荐linux内核 >= 5.12,并且程序中设置SWOOLE_IOURING_SQPOLL采用轮询模式性能会更加强悍。

Swoole v6 将引入 Linux io_uring ,并发读写文件性能提升了 5 倍

协程锁

以前在多进程中想实现跨协程资源同步,只能使用进程锁或者redis锁。问题在于进程锁会阻塞进程没法在协程中使用,redis锁会带两次网络IO操作。因此在Swoole v6.0.0中新增了不会阻塞进程/线程的协程锁,没有获得锁的协程不会阻塞进程/线程,而是会让出CPU给其他协程。并发性能好。

$lock = new Swoole\Lock(SWOOLE_COROLOCK);
$lock->lock();

如果linux内核 >= 6.7, liburing >= 2.6Swoole v6.0.0会使用iouring的futex特性 + 原子计数来实现协程锁,否则就用sleep + 原子计数实现协程锁。

高性能无损压缩工具 - Zstd

Swoole v6.0.0支持高性能无损压缩工具Zstd,只需要编译Swoole v6.0.0指定--enable-zstd即可。这样http服务端就可以通过Zstd压缩http响应,减少带宽消耗。

下一个版本

Swoole下一个版本会考虑将http_parser替换为llhttp,目的是为了获得更好的解析http报文的性能。在用wrk发送下面的请求时,llhttp会有更好的性能。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 12

性能越来越好了 :+1:

3个月前 评论
梦想星辰大海

hyperf什么时候适配进来

3个月前 评论
加了sugar (楼主) 3个月前

win 下能使用不?

3个月前 评论
晏南风 3个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!