swoole哪个版本支持php5
发布时间 - 2019-12-07 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 回调函数中使用。
使用示例
$server = new Swoole\Http\Server('127.0.0.1', 9501); /* 触发on request事件时,SWOOLE会开辟一个协程栈,对协程栈进行初始化 */ $server->on('Request', function ($request, $response) { $tcp_cli = new Swoole\Coroutine\Client(SWOOLE_SOCK_TCP); /** client在调用connect函数后,SWOOLE会将PHP上下文信息保存到当前栈内 然后将协程挂起,待确认连接成功后,触发epoll事件,然后协程切换 恢复PHP上下文信息,返回结果,继续执行PHP代码 */ if ($tcp_cli->connect('127.0.0.1', 9906) === false) { $response->end("connect server failed."); return; } $tcp_cli->send('test for the coro'); /* client在调用recv函数后,SWOOLE会将PHP上下文信息保存到当前栈内 然后将协程挂起待后端svr回包,触发epoll事件,然后协程切换 恢复PHP上下文信息,返回结果,继续执行PHP代码 如果后端在设定的超时时间内,未能回包,返回false client的errCode定为110 */ $ret = $tcp_cli->recv(100); $tcp_cli->close(); if ($ret) { $response->end(" swoole response is ok"); } else { $response->end(" recv failed error : {$tcp_cli->errCode}"); } }); $server->start();
# swoole
# 关键词
# 客户端
# 会将
# 回调
# 挂起
# 后端
# 不需要
# 时间内
# 几种
# 只需要
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
怎么用AI帮你为初创公司进行市场定位分析?
html5的keygen标签为什么废弃_替代方案说明【解答】
Laravel怎么使用Intervention Image库处理图片上传和缩放
EditPlus中的正则表达式实战(5)
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Linux系统命令中tree命令详解
如何快速搭建安全的FTP站点?
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
如何快速搭建高效香港服务器网站?
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
大同网页,大同瑞慈医院官网?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
如何在宝塔面板中修改默认建站目录?
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
如何用腾讯建站主机快速创建免费网站?
如何选择可靠的免备案建站服务器?
中山网站推广排名,中山信息港登录入口?
如何用花生壳三步快速搭建专属网站?
再谈Python中的字符串与字符编码(推荐)
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
iOS中将个别页面强制横屏其他页面竖屏
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
网站优化排名时,需要考虑哪些问题呢?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
如何在建站宝盒中设置产品搜索功能?
Windows Hello人脸识别突然无法使用
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何在橙子建站上传落地页?操作指南详解
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
详解阿里云nginx服务器多站点的配置
郑州企业网站制作公司,郑州招聘网站有哪些?
Laravel如何实现文件上传和存储?(本地与S3配置)
如何用搬瓦工VPS快速搭建个人网站?
Android滚轮选择时间控件使用详解
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
Swift开发中switch语句值绑定模式
用v-html解决Vue.js渲染中html标签不被解析的问题
Laravel如何实现用户密码重置功能?(完整流程代码)
JS实现鼠标移上去显示图片或微信二维码
如何用低价快速搭建高质量网站?


p\Server('127.0.0.1', 9501);
/*
触发on request事件时,SWOOLE会开辟一个协程栈,对协程栈进行初始化
*/
$server->on('Request', function ($request, $response) {
$tcp_cli = new Swoole\Coroutine\Client(SWOOLE_SOCK_TCP);
/**
client在调用connect函数后,SWOOLE会将PHP上下文信息保存到当前栈内
然后将协程挂起,待确认连接成功后,触发epoll事件,然后协程切换
恢复PHP上下文信息,返回结果,继续执行PHP代码
*/
if ($tcp_cli->connect('127.0.0.1', 9906) === false) {
$response->end("connect server failed.");
return;
}
$tcp_cli->send('test for the coro');
/*
client在调用recv函数后,SWOOLE会将PHP上下文信息保存到当前栈内
然后将协程挂起待后端svr回包,触发epoll事件,然后协程切换
恢复PHP上下文信息,返回结果,继续执行PHP代码
如果后端在设定的超时时间内,未能回包,返回false
client的errCode定为110
*/
$ret = $tcp_cli->recv(100);
$tcp_cli->close();
if ($ret) {
$response->end(" swoole response is ok");
} else {
$response->end(" recv failed error : {$tcp_cli->errCode}");
}
});
$server->start();