swoole协程如何使用,开启及创建协程操作是什么
Admin 2022-09-13 群英技术资讯 979 次浏览
Swoole 2.0版本最大的更新是增加了对协程(Coroutine)的支持。正式版已同时支持PHP5和PHP7。
基于Swoole2.0协程PHP开发者可以已同步的方式编写代码,底层自动进行协程调度,转变为异步IO。
解决了传统异步编程嵌套回调的问题。
与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 回调函数中使用。
使用 swole 协程
如何使用协程:
使用 go()(\Swoole\Coroutine::create() 的简写) 创建一个协程
在 go() 的回调函数中, 加入协程需要执行的代码, 注意是 非阻塞代码
use Swoole\Coroutine as Co; // 常用的缩写方式 go(function () { // 创建协程, 回调函数中写需要在协程中执行的代码 echo "daydaygo"; Co::sleep(1); // 不能是阻塞代码 });
协程
上文提到的, 使用 go() 创建一个协程
swoole server 中, 底层自动在 onRequet, onReceive, onConnect 等事件回调之前自动创建一个协程
开启 enable_coroutine 参数后的影响范围: 主要还包括 Timer 定时器
使用 task_enable_coroutine 开启的协程版 Task 进程, 会在 onTask 回调之前自动创建一个协程
进程和进程池支持开启协程, 开启后创建的子进程会自动创建协程
// tcp/udp server, 可以在此基础可封装 rpc $s = new \Swoole\Server(); // http server, 替代传统的 fpm $s = new \Swoole\Http\Server(); // 开启 http2 支持: https://wiki.swoole.com/wiki/page/326.html $s = new \Swoole\Http\Server(); $s->set([ 'open_http2_protocol' => true, ]); // 进而可以实现基于 http2 的服务, 比如 grpc // websocket server $s = new \Swoole\WebSocket\Server();
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。提示:数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。数据库软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的,因此用单例模式来维护,就可以大大降低这种损耗。
在之前的文章中给大家带来了《一定搞得懂PHP中如何添加图片水印》,其中通过过示例给大家详细介绍了在PHP中应该如何添加水印,本篇文章我们继续来看一下PHP中错误处理的相关知识,希望能帮助到大家!
今天小编就为大家分享一篇关于PDO::setAttribute讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
php中yaf框架的配置:1、配置运行环境,把本地开发设置成develop、测试环境配置成test、生产环境配置成product;2、配置可以引入php常量定义,Yaf 的必须配置,其实就是个目录设定。
当我们在使用validate等方法进行验证时,如果是错误,则会返回首页,那么这个跳转到首页如何实现的呢?今天小编给大家分享一篇教程关于Laravel使用验证时跳转到首页的解决办法,一起看看吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008