介绍
这篇文章给大家分享的是有关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}“); ,,,} }); 服务器→美元开始();