
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网别的相干文章!