Swoole v6.0.0发布啦,一起来看看新特性🎉🎉🎉
大家好,Swoole v6.0.0
也是在今天发布啦,在这里也是给大家列出这个版本的新特性,方便大家快速了解这个新版本。
多线程模式
Swoole v6.0.0
带来了新的多线程模式,这模式需要在 php zts
模式下,编译Swoole
时开启--enable-swoole-thread
。这样会将所有的多进程模式全部替换成多线程模式,实现多线程编程。
Swoole v6 Alpha 版本已发布,为 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.6
,Swoole 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 协议》,转载必须注明作者和本文链接
我去,发布了
前排
性能越来越好了 :+1:
线程玩不过java 协程玩不过go 还是curd吧 省心
hyperf什么时候适配进来
win 下能使用不?