swoole-foundation/swoole-thrift
Composer 安装命令:
composer require swoole-foundation/swoole-thrift
包简介
thrift framework on swoole server
README 文档
README
基于基于swoole协程的thrift服务端。
基于thrift标准接口编程,使用方法与原生thrift一致。
version
- swoole 4.x
- thrift 0.12
使用方法
composer require swoole-foundation/swoole-thrift
示例代码
-
Server
<?php /** * thrift服务端 * @author xialeistudio * @date 2019-05-16 */ use swoole\foundation\thrift\factory\TFramedTransportFactory; use swoole\foundation\thrift\server\SwooleServer; use swoole\foundation\thrift\server\SwooleServerTransport; use Swoole\Server; use tests\handler\SumServiceImpl; use tests\services\SumService\SumServiceProcessor; use Thrift\Exception\TTransportException; use Thrift\Factory\TBinaryProtocolFactory; require __DIR__ . '/vendor/autoload.php'; $processor = new SumServiceProcessor(new SumServiceImpl()); $serverTransport = new SwooleServerTransport('localhost'); $transportFactory = new TFramedTransportFactory(); $protocolFactory = new TBinaryProtocolFactory(); $server = new SwooleServer( $processor, $serverTransport, $transportFactory, $transportFactory, $protocolFactory, $protocolFactory ); try { $server->on('start', function (Server $server) { printf("Server::serve on %s:%d\n", $server->host, $server->port); }); $server->serve(); } catch (TTransportException $e) { printf("Server::serve error: {$e->getMessage()}\n"); }
-
Client
<?php /** * thrift客户端,共用一个连接 * @author xialeistudio * @date 2019-05-16 */ use swoole\foundation\thrift\client\Transport; use tests\services\SumService\SumServiceClient; use Thrift\Protocol\TBinaryProtocol; use Thrift\Transport\TFramedTransport; require __DIR__ . '/../vendor/autoload.php'; $transport = new Transport('localhost', 9501); $transport = new TFramedTransport($transport); $protocol = new TBinaryProtocol($transport); $client = new SumServiceClient($protocol); $transport->open(); $max = $min = $count = $total = 0; for ($i = 0; $i < 10000; $i++) { $start = microtime(true); $client->sum(1, 1); $duration = microtime(true) - $start; $max = max($duration, $max); $min = $min === 0 ? $duration : min($duration, $min); $count++; $total += $duration; } printf("max: %fs\nmin: %fs\navg: %fs\ncall count: %d\ntotal time: %fs\n", $max, $min, $total / $count, $count, $total);
压力测试
- 4核i5
- 8G内存
max: 0.001053s
min: 0.000084s
avg: 0.000094s
call count: 10000
total time: 0.936655s
swoole-foundation/swoole-thrift 适用场景与选型建议
swoole-foundation/swoole-thrift 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 170 次下载、GitHub Stars 达 10, 最近一次更新时间为 2019 年 05 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「rpc」 「thrift」 「swoole」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 swoole-foundation/swoole-thrift 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 swoole-foundation/swoole-thrift 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 swoole-foundation/swoole-thrift 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Cassandra Thrift Wrapper
Microservice RPC through message queues.
Evernote Thrift SDK for PHP
annotations-scan-plugin
HBase Thrift Driver for HBase 1.12
Control Nginx as a reverse proxy through plinker RPC
统计信息
- 总下载量: 170
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 10
- 点击次数: 8
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-05-17