旗下导航:搜·么
当前位置:网站首页 > PHP框架 > Swoole > 正文

swoole协程怎样开启【swoole】,swoole

作者:搜搜PHP网发布时间:2019-12-09分类:Swoole浏览:113


导读:Swoole2.0正式版宣布了。2.0版本最大的更新是增加了对协程(Coroutine)的支撑。正式版已同时支撑PHP5和PHP7。基于Swoole2.0协程PHP开...

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 回调函数中运用。

运用 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协程怎样开启的细致内容,更多请关注ki4网别的相干文章!

标签:swoole