panus/php-thrift-swoole
Composer 安装命令:
composer require panus/php-thrift-swoole
包简介
基于Swoole的Thrift Server实现
关键字:
README 文档
README
安装
composer require panus/php-thrift-swoole
服务端示例
- 生成服务端代码
thrift --gen php:server,psr4 order.thrift
- 业务层自行去实现生成的接口
$service = new OrderServiceImpl();
$processor = new OrderServiceProcessor($service);
//swooler_server 里的配置选项参数,worker_num根据实际调用情况调节
$setting = [
'worker_num' => 4,
'log_file' => __DIR__.'/swoole.log',
'pid_file' => __DIR__.'/thrift.pid',
];
$socket_tranport = new \SwooleThrift\TSwooleServerTransport('0.0.0.0', 8192, $setting);
$out_factory = $in_factory = new \Thrift\Factory\TTransportFactory();
$out_protocol = $in_protocol = new \Thrift\Factory\TBinaryProtocolFactory();
$server = new \SwooleThrift\TSwooleServer($processor, $socket_tranport, $in_factory, $out_factory, $in_protocol, $out_protocol);
$server->serve();
客户端示例
$socket = new \Thrift\Transport\TSocket('192.168.0.101', 8100);
$transport = new \Thrift\Transport\TFramedTransport($socket);
$protocol = new \Thrift\Protocol\TBinaryProtocol($transport);
$transport->open();
$client = new OrderServiceClient($protocol);
$client->implMethod(...);
$transport->close();
开启thrift_protocol扩展(可选)
cd /thrift_root/lib/php/src/ext/thrift_protocol
/php_path/bin/phpize
./configure --with-php-config=/php_path/bin/php-config
make
make install
echo "extension=thrift_protocol.so" >> /path/php.ini
后端服务负载均衡
- nginx从1.9.0后引入模块ngx_stream_core_module,模块默认是没有开启的,编译时开启 --with-stream
http {
...
}
stream {
upstream thrift {
server 127.0.0.1:8192 weight=1;
#server backend1:9000 weight=5;
}
server {
listen 8100;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass thrift;
}
}
进程控制
- 关闭服务器:
kill -TERM {masterPid} - 重启Worker进程:
kill -USR1 {masterPid} - 官方的额外说明
平滑重启只对onWorkerStart或onReceive等在Worker进程中include/require的PHP文件有效,Server启动前就已经include/require的PHP文件,不能通过平滑重启重新加载 对于Server的配置即$serv->set()中传入的参数设置,必须关闭/重启整个Server才可以重新加载
Server状态参数输出
- 默认绑定的本地回环地址,端口为8090,可在setting 里设置
http_server_host和http_server_port,不建绑在公网ip地址上 - 响应如下,也就是
swoole_server->stats
{
"start_time": 1522580115,
"connection_num": 2,
"accept_count": 2,
"close_count": 0,
"tasking_num": 0,
"request_count": 0,
"worker_request_count": 0
}
注意事项
- 由于传输层是用
TFramedTransport,所以对应的客户端也是要采用该传输层
参考部分
panus/php-thrift-swoole 适用场景与选型建议
panus/php-thrift-swoole 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 330 次下载、GitHub Stars 达 9, 最近一次更新时间为 2018 年 04 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「rpc」 「thrift」 「thrift swoole」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 panus/php-thrift-swoole 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 panus/php-thrift-swoole 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 panus/php-thrift-swoole 相关的其它包
同方向 / 同关键字的高下载量 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
统计信息
- 总下载量: 330
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 9
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-04-02