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 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 13

性能越来越好了 :+1:

2个月前 评论

线程玩不过java 协程玩不过go 还是curd吧 省心

2个月前 评论
一念沧海一念桑田 2个月前
XIAMANG 2个月前
晏南风 2个月前
郎中航 2个月前
nothingtosay 1个月前
梦想星辰大海

hyperf什么时候适配进来

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

win 下能使用不?

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

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