当前位置:Gxlcms > php框架 > swoole版本的区别

swoole版本的区别

时间:2021-07-01 10:21:17 帮助过:23人阅读

Swoole 2.0正式版发布了。2.0版本最大的更新是增加了对协程(Coroutine)的支持。正式版已同时支持PHP5和PHP7。

基于Swoole2.0协程PHP开发者可以已同步的方式编写代码,底层自动进行协程调度,转变为异步IO。解决了传统异步编程嵌套回调的问题。 (推荐学习: swoole视频教程)

与Node.js(ES6+)、Python等语言使用yield/generator、async/await的实现方式相比,Swoole协程无需修改代码添加额外的关键词。

与Go语言的goroutine相比,Swoole协程是内置式的,应用层代码无需添加go关键词启动协程,只需要使用封装好的协程客户端即可,使用更简单。另外Swoole协程的IO组件在底层内置了超时机制,不需要使用复杂的select/chan/timer实现客户端超时。

目前Swoole底层内置的协程客户端组件包括:udpclient、tcpclient、httpclient、redisclient、mysqlclient,基本涵盖了开发者常用的几种通信协议。协程组件只能在服务器的onConnect、onRequest、onReceive、onMessage 回调函数中使用。

Swoole 3.0版本中,我们实现了一个全新的 PHP 内置协程调度器,基于ZendVM 的 EG(vm_interrupt) 机制实现,移除了 setjmp/longjmp 的依赖。

使得 Swoole 协程可以应用于任何位置,包括PHP 对象析构函数、魔术方法、反射函数调用 等场景,新的版本号将更改为Swoole 3.0,原计划基于libco的C栈协程,推迟到4.0。

新版协程内核依赖PHP-7.1,因此Swoole对PHP的版本依赖提高至7.1,对gcc的版本依赖提高至4.8。

Swoole 4.0基于boost.context 1.60汇编代码实现了全新的协程内核

在保存PHP函数调用栈的基础上,增加了C栈的上下文存储。实现了对所有PHP语法的支持。现在在任意PHP的函数,包括call_user_func、反射、魔术方法、array_map中均可使用协程。

4.0与2.0是100%兼容的,仅重构了协程内核,API层无变更

4.0分支代码即将升级至C++11标准,建议使用gcc-4.8或更高版本

支持php7.1及以上版本

以上就是swoole版本的区别的详细内容,更多请关注Gxlcms其它相关文章!

人气教程排行