定制 swoole-foundation/swoole-thrift 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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 我们能提供哪些服务?
定制开发 / 二次开发

基于 swoole-foundation/swoole-thrift 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 170
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 10
  • 点击次数: 8
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 10
  • Watchers: 1
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-05-17