swoole版本的区别

发布时间 - 2019-12-16 00:00:00    点击率:

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  # Python  # php  # c++  # node.js  # es6  # 封装  # 析构函数  # select  # 回调函数  #   # Go语言  # JS  # 对象  # 异步  # 重构  # 关键词  # 客户端  # 实现了  # 回调  # 增加了  # 不需要  # 基础上  # 几种  # 均可  # 只需要 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在阿里云ECS服务器部署织梦CMS网站?  Python结构化数据采集_字段抽取解析【教程】  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  深圳网站制作的公司有哪些,dido官方网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  网站制作壁纸教程视频,电脑壁纸网站?  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Python图片处理进阶教程_Pillow滤镜与图像增强  EditPlus中的正则表达式 实战(2)  米侠浏览器网页背景异常怎么办 米侠显示修复  Laravel中的Facade(门面)到底是什么原理  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  详解jQuery中基本的动画方法  三星网站视频制作教程下载,三星w23网页如何全屏?  详解jQuery中的事件  js实现获取鼠标当前的位置  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  iOS UIView常见属性方法小结  如何注册花生壳免费域名并搭建个人网站?  html5的keygen标签为什么废弃_替代方案说明【解答】  浅谈javascript alert和confirm的美化  七夕网站制作视频,七夕大促活动怎么报名?  如何快速搭建高效香港服务器网站?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel如何配置和使用缓存?(Redis代码示例)  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  香港服务器部署网站为何提示未备案?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  EditPlus中的正则表达式 实战(4)  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  在线制作视频网站免费,都有哪些好的动漫网站?  如何用y主机助手快速搭建网站?  node.js报错:Cannot find module 'ejs'的解决办法  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何登录建站主机?访问步骤全解析  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何在腾讯云免费申请建站?  如何在宝塔面板中创建新站点?  微信小程序 闭包写法详细介绍  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel如何实现用户密码重置功能?(完整流程代码)