wokerman thrift调试历程

前期准备:

thrift安装包:

下面我们实际创建个例子

1.第一步模仿下官方例子,自己建一个thift协议

命名空间第一个语言名,后面为生成的命名空间名称。

此处实现了两个方法:一个返回字符串类型 第二个返回int32类型

他们均接受一个字符串参数

2.生成代码文件

3.在当前目录下的 gen-php/Services应该生成了个UserInfo的文件夹。

UserInfo此为命名空间目录,下面的文件夹共有两个文件。

Types.php 2. UserInfo.php

将生成的文件目录UserInfo 复制到 workerman 下面的Applications/ThriftRpc/Services/下

cp ./UserInfo /data/www/xxx/workerman-thrift/Applications/ThriftRpc -r

在复制过来的UserInfo里面新建 UserInfoHandler.php 文件, 实现UserInfoIf的接口,这些接口是我们在UserInfo.thrift中定义的。

如果你的返回值类型并不是thrift文件定义的那样,将会被强制转义并在后台报一条错误。 必须以Handler结尾的文件类名

6.绑定端口提供服务

注意启动后查看 进程名称是否存在,listen中tcp列表 是否有我们新增的端口

相应的process数量对应我们刚才设置的count属性。

服务简单的运行起来了,下面我们看下客户端

1.首先我们引入ThriftClient.php

它会自动帮我们引入我们需要的类

UserInfo服务是我们新增的服务,address是我们的端口号,是个数组的配置。地址是可以支持多个,进行随机请求处理。

3.获取UserInfo的实例-调用方法

注意 异步调用和接收值的传参数必须一致,否则无法定位到该接收哪个值。

更多的thrift语法使用:

返回值为key和value均强制转换为为string.

注意list结构其实对应php的0,1,2,3有序下标。

返回结果:

结构体

返回值

结构体

返回值:

如何为自己的应用程序拓展model层等

workerman-thrift/Applications/ThriftRpc/ThriftWorker.php:22

注册Model到命名空间中

log文件地址

thrift实际部署工作流

thrift区分客户端和服务端

在服务器端的脚本,扫描文件生成,复制到业务目录里,然后重启workerman

但是客户端需要用到生成的文件XXService/XXService.php,整个工作流目前怎么管理还不知道,希望有耐心看到这里的读者给我些思路。 目前用的手动创建目录复制。

客户端调用实例:

使用composer安装客户端

composer.json

require加载进来的名字 repositories仓库地址

workerman运行:

监控workerman运行

http://127.0.0.1:55757/

需要额外配置 Applications/Statistics/Lib/Cache.php

定义返回一个二维数组类型

php中获取数据库中查询的一维数组返回回来:

注册我们提供的服务地址

启动服务

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180905G1JAOM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券