swoole协程如何开启

小编给大家分享一下swoole协程如何开启,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

创新互联建站于2013年创立,先为阳西等服务建站,阳西等地企业,进行企业商务咨询服务。为阳西企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

Swoole 2.0正式版发布了。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();

看完了这篇文章,相信你对“swoole协程如何开启”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!

文章标题:swoole协程如何开启
URL地址:https://www.cdcxhl.com/article24/jijgce.html

成都网站建设公司_创新互联,为您提供网站策划云服务器营销型网站建设品牌网站建设外贸建站服务器托管

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

微信小程序开发