发布于 2017-01-03 08:19:24 | 222 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Swoole扩展官方文档,程序狗速度看过来!

Swoole Framework PHP Web开发框架

Swoole是一个php扩展也是一种PHP高级Web开发框架,框架不是为了提升网站的性能,是为了提升网站的开发效率。最少的性能损耗,换取最大的开发效率。利用Swoole框架,开发一个复杂的Web功能,可以在很短的时间内完成!


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

使用示例:

$server = new SwooleHttpServer('127.0.0.1', 9501);  /*     触发on request事件时,SWOOLE会开辟一个协程栈,对协程栈进行初始化  */ $server->on('Request', function ($request, $response) {     $tcp_cli = new SwooleCoroutineClient(SWOOLE_SOCK_TCP);     /**         client在调用connect函数后,SWOOLE会将PHP上下文信息保存到当前栈内         然后将协程挂起,待确认连接成功后,触发epoll事件,然后协程切换         恢复PHP上下文信息,返回结果,继续执行PHP代码      */     if ($tcp_cli->connect('127.0.0.1', 9906) === false) {         $response->end("connect server failed.");         return;     }     $tcp_cli->send('test for the coro');     /*         client在调用recv函数后,SWOOLE会将PHP上下文信息保存到当前栈内         然后将协程挂起待后端svr回包,触发epoll事件,然后协程切换         恢复PHP上下文信息,返回结果,继续执行PHP代码         如果后端在设定的超时时间内,未能回包,返回false         client的errCode定为110      */     $ret = $tcp_cli->recv(100);     $tcp_cli->close();     if ($ret) {         $response->end(" swoole response is ok");     } else {         $response->end(" recv failed error : {$tcp_cli->errCode}");     } });  $server->start();

UDP客户端

$udp_cli = new SwooleCoroutineClient(SWOOLE_SOCK_UDP);  $ret = $udp_cli->connect('127.0.0.1', 9906); $udp_cli->send('test for the coro');  $ret = $udp_cli->recv(100); $udp_cli->close();  if ($ret) {     $response->end("swoole response is ok"); } else {     $response->end("recv failed error : {$client->errCode}"); }

MySQL客户端

$swoole_mysql = new SwooleCoroutineMySQL(); $swoole_mysql->connect([     'host' => '127.0.0.1',     'user' => 'user',     'password' => 'pass',     'database' => 'test' ]); $res = $swoole_mysql->query('select sleep(1)');

Redis客户端

$redis = new SwooleCoroutineRedis(); $redis->connect('127.0.0.1', 6379); $val = $redis->get('key');

Http客户端

$cli = new SwooleCoroutineHttpClient('127.0.0.1', 80); $cli->setHeaders([     'Host' => "localhost",     "User-Agent" => 'Chrome/49.0.2587.3',     'Accept' => 'text/html,application/xhtml+xml,application/xml',     'Accept-Encoding' => 'gzip', ]); $cli->set([ 'timeout' => 1]); $cli->get('/index.php'); echo $cli->body;   $cli->close();

下载地址:



历史版本 :
Swoole 1.10.0 发布,增加多项新特性
Swoole 1.9.22 发布,增加 Async::exec 功能
SwooleDistributed 框架 2.5 发布,全面支持 Docker
Swoole 1.9.19 发布,BUG 修复版本
Swoole 1.9.17 发布,增加静态文件处理器
Swoole 1.9.15 发布,增加静态编译支持
Swoole 1.9.11 发布,心跳检测支持时间轮算法
Swoole 1.9.9 发布,BUG 修复版本
Swoole 1.9.7 发布,增加 Http2.0 异步客户端
Swoole 1.9.6 发布,增加高性能序列化模块
Swoole 2.0 正式版发布,协程特性支持 PHP 7
Swoole 1.9.1 发布,Bug 修复版本
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务