博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mac安装Thrift
阅读量:6720 次
发布时间:2019-06-25

本文共 2354 字,大约阅读时间需要 7 分钟。

  hot3.png

Thrift是支持多种语言的远程服务调用的框架,该框架通过自定义的 Interface Definition Language(IDL)可以基于RPC客户端和服务端服务代码

Mac安装Thrift

brew install thrift

其他平台安装较为麻烦需要安装一系列依赖

安装成功后执行

thrift -version

看到版本号则安装成功.

生成语言为php的调用方式 创建一个HelloThrift.thrift文件

namespace php HelloThrift  service HelloService {     string sayHello(1:string username) }

使用thrift -r --gen php:server HelloThrift.thrift 去在当前目录下生成 一个gen-php(此处文档写的极不清楚,一开始以为是创建文件夹),并且将 gen-php改为gen_php(此处随意)

Notice

但是还是需要下载thrift的源码

git clone https://git-wip-us.apache.org/repos/asf/thrift.git thrift

将下载的源码lib目录下的文件cp到刚才生成文件的根目录下

服务端代码

registerNamespace('Thrift',__DIR__.'/lib/php/lib');$loader->registerDefinition('HelloThrift',$GEN_DIR);$loader->register();if (php_sapi_name() == 'cli') { ini_set('display_errors',"stderr");}use Thrift\Protocol\TBinaryProtocol;use Thrift\Transport\TPhpStream;use Thrift\Transport\TBufferedTransport;class HelloHandler implements \HelloThrift\HelloServiceIf { public function sayHello($username) { return "Hello ".$username; }}header('Content-Type','application/x-thrift');if (php_sapi_name() == 'cli') { echo PHP_EOL;}$handler = new HelloHandler();$processor = new \HelloThrift\HelloServiceProcessor($handler);$transport = new TBufferedTransport(new TPhpStream(TPhpStream::MODE_R | TPhpStream::MODE_W));$protocol = new TBinaryProtocol($transport,true,true);$transport->open();$processor->process($protocol,$protocol);$transport->close();

客户端代码

registerNamespace('Thrift',__DIR__.'/lib/php/lib');$loader->registerDefinition('HelloThrift',$GEN_DIR);$loader->register();use Thrift\Protocol\TBinaryProtocol;use Thrift\Transport\TSocket;use Thrift\Transport\THttpClient;use Thrift\Transport\TBufferedTransport;use Thrift\Exception\TException;try { if (array_search('--http',$argv)) { $socket = new THttpClient('localhost',8080,'/Server.php'); } else { $socket = new TSocket('localhost',9090); } $transport = new TBufferedTransport($socket,1024,1024); $protocol = new TBinaryProtocol($transport); $client = new \HelloThrift\HelloServiceClient($protocol); $transport->open(); echo $client->sayHello(" World! "); $transport->close();} catch (\Exception $e) { print 'TException:'.$e->getMessage().PHP_EOL;}

一定要确保能够引入配置文件才可以。

在根目录运行php -S localhost:8080

客户端执行php Client --http 可以看到hello即为成功

转载于:https://my.oschina.net/kakoi/blog/1502693

你可能感兴趣的文章
Laravel使用Carbon人性化显示时间
查看>>
我的友情链接
查看>>
SQL 2008 R2安装部署及端口开放
查看>>
oracle 日期函数总结
查看>>
11.11即将到来,华为云学院精品课程免费推荐奉上
查看>>
MAC OS 密码忘记 重置方法
查看>>
GNS3中支持的模块
查看>>
反垃圾邮件神器--开源邮件网关ScrolloutF1之一--安装及更新
查看>>
Centos6.8系统怎么解决“/boot”分区满了
查看>>
关于空指针的解决办法
查看>>
Myeclipse发布第一个jsp页面及web project部署到tomcat上的几种方法
查看>>
bzoj 2705: [SDOI2012]Longge的问题
查看>>
Eclipse中常用的快捷键
查看>>
华为交换机部分进程说明 dis cpu-usage
查看>>
Linux命令(19):ln命令
查看>>
Python里的OS模块常用函数说明
查看>>
sql:拼接字符串、截取字符串、取字符串长度
查看>>
mysql 主从复制
查看>>
php动态扩展bcmath与sockets库模块
查看>>
记录quick cocos2d-x3.2升级至cocos2d-x3.8
查看>>