2.0 Swoole正式版的使用示例

  介绍

这篇文章给大家分享的是有关Swoole 2.0正式版的使用示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

<强> Swoole 2.0正式版发布了.2.0版本最大的更新是增加了对协程(协同程序)的支持。正式版已同时支持PHP5和PHP7。基于Swoole2.0协程PHP开发者可以已同步的方式编写代码,底层自动进行协程调度,转变为异步IO。

解决了传统异步编程嵌套回调的问题。

与节点。js (ES6 +), Python等语言使用收益率/发电机,异步/等待的实现方式相比,Swoole协程无需修改代码添加额外的关键词。

与去语言的goroutine相比,Swoole协程是内置式的,应用层代码无需添加去关键词启动协程,只需要使用封装好的协程客户端即可,使用更简单。

另外Swoole协程的IO组件在底层内置了超时机制,不需要使用复杂的选择/陈/计时器实现客户端超时。

目前Swoole底层内置的协程客户端组件包括:udpclient, tcpclient, httpclient, redisclient, mysqlclient,基本涵盖了开发者常用的几种通信协议。

协程组件只能在服务器的onConnect, onRequest, onReceive, onMessage回调函数中使用。

<强>使用示例

server 美元;=,new  Swoole \ Http \服务器(& # 39;127.0.0.1 # 39;,,9501);/*   ,,,触发提醒请求事件时,SWOOLE会开辟一个协程栈,对协程栈进行初始化   ,*/服务器→美元(& # 39;请求# 39;,,function ($请求,响应美元),{   ,,,tcp_cli 美元;=,new  Swoole \协同程序\客户(SWOOLE_SOCK_TCP);   ,,,/* *   ,,,,,,,客户在调用连接函数后,SWOOLE会将PHP上下文信息保存到当前栈内   ,,,,,,,然后将协程挂起,待确认连接成功后,触发epoll事件,然后协程切换   ,,,,,,,恢复PHP上下文信息,返回结果,继续执行PHP代码   ,,,*/,,,if (美元tcp_cli→连接(& # 39;127.0.0.1 # 39;,,9906),===,false), {   ,,,,,,,反应→美元结束(“connect  server 失败!”);   ,,,,,,,返回;   ,,,}   ,,,美元tcp_cli→发送(& # 39;test  for 从而重复# 39;);   ,,/*   ,,,,,,,客户在调用recv函数后,SWOOLE会将PHP上下文信息保存到当前栈内   ,,,,,,,然后将协程挂起待后端svr回包,触发epoll事件,然后协程切换   ,,,,,,,恢复PHP上下文信息,返回结果,继续执行PHP代码   ,,,,,,,如果后端在设定的超时时间内,未能回包,返回错误的   ,,,,,,,客户的errCode定为110   ,,,*/,,,ret 美元;=,美元tcp_cli→recv (100);   ,,,美元tcp_cli→关闭();   ,,,if  (ret), {   ,,,,,,,反应→美元结束(“,swoole  response  is  ok");   ,,,},{else    ,,,,,,,反应→美元结束(“,recv  failed  error :, {tcp_cli→美元errCode}“);   ,,,}   });   服务器→美元开始();

2.0 Swoole正式版的使用示例