加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

关于php借助thrift做服务端开发的那些事

发布时间:2022-07-21 12:58:15 所属栏目:PHP教程 来源:互联网
导读:php使用thrift做服务端开发 thrift采用接口描述语言定义和创建服务,用二进制格式传输数据,体积更
  php使用thrift做服务端开发
  thrift采用接口描述语言定义和创建服务,用二进制格式传输数据,体积更小、效率更高,对于高并发、数据量大和多语言的环境有更好的支持。
 
  Apache Thrift是啥?
 
  Apache Thrift是FaceBook开发的一套可扩展的、跨语言的服务调用框架。简单的说就是先定义一个配置文件,不同的语言可以利用thrift基于这个配置文件生成各自语言的服务端,不管客户端用什么语言,都可以调用,也就是说基于thrift协议用java可以调用php的服务。目前支持C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi等语言之间相互调用。
 
  相对于传统的xml和json等数据传输方式来说,thrift采用接口描述语言定义和创建服务,用二进制格式传输数据,体积更小、效率更高,对于高并发、数据量大和多语言的环境有更好的支持。
 
  thrift安装环境要求
 
  g++ 4.2
 
  boost 1.53.0
 
  lex and yacc(基于flex和bison)
 
  如果没安装lex和yacc的话要先安装,否则会make失败,提示lex和yacc command not found错误(一般的机器貌似都没安,Ubuntu用apt-get install flex bision即可)。
 
  安装thrift
 
  下载最新版thrift:
 
 
 
 
  wget http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.3/thrift-0.9.3.tar.gz
 
  tar xvf thrift-0.9.3.tar.gz
 
  cd thrift-0.9.3
 
  2.创建configure文件
 
 
  
 
  // 创建./configure文件
 
  ./bootstrap.sh
 
  // 配置并安装
 
  ./configure
 
  make
 
  // 检测是否有问题,如果机子没有安装python和java等可能会报错,不过本文主要讲php,安了php环境就行
 
  make check
 
  make install
 
  编译选项
 
  使用./configure --help可以查看选项
 
  如果想禁用某个语言,可以用./configure --without-java
 
  thrift for php安装环境要求
 
  php版本>5.0,因为TBinaryProtocol协议用到了pack()和unpack()函数来序列化数据
 
  需要安装APC扩展,因为TSocketPool这个类用到了apc_fetch()和apc_store()函数进行apc缓存操作。
 
  php使用thrift的时候,除了要将thrift/lib/php/lib里的基础文件copy到项目目录下,还需要将根据配置文件生成的php文件也copy到packages文件夹下,并引入到项目中,这个后续会详细讲。
 
  类库说明
 
  数据传输格式(protocol)
 
  定义的了传输内容,对Thrift Type的打包解包,包括:
 
  TBinaryProtocol,二进制格式,TBinaryProtocolAccelerated则是依赖于thrift_protocol扩展的快速打包解包。
 
  TCompactProtocol,压缩格式
 
  TJSONProtocol,JSON格式
 
  TMultiplexedProtocol,利用前三种数据格式与支持多路复用协议的服务端(同时提供多个服务,TMultiplexedProcessor)交互
 
  数据传输方式(transport)
 
  定义了如何发送(write)和接收(read)数据,包括:
 
  TBufferedTransport,缓存传输,写入数据并不立即开始传输,直到刷新缓存。
 
  TSocket,使用socket传输
 
  TFramedTransport,采用分块方式进行传输,具体传输实现依赖其他传输方式,比如TSocket
 
  TCurlClient,使用curl与服务端交互
 
  THttpClient,采用stream方式与HTTP服务端交互
 
  TMemoryBuffer,使用内存方式交换数据
 
  TPhpStream,使用PHP标准输入输出流进行传输
 
  TNullTransport,关闭数据传输
 
  TSocketPool在TSocket基础支持多个服务端管理(需要APC支持),自动剔除无效的服务器

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读