博客列表 >Protobuf在PHP中使用

Protobuf在PHP中使用

昵称的博客
昵称的博客原创
2019年09月17日 15:34:162825浏览
  1. 安装
     1.1 安装PHP请自行处理

  2.  protobuf安装

    2.1 php protobuf扩展安装

    请检查PHP是否安装这些扩展,如果没安装 请安装

    sudo apt-get install -y php-pear php5-dev autoconf automake libtool make gcc

    我们选择使用php pecl 安装该扩展


    sudo pecl install protobuf


    查看下php.ini的位置

    php --ini



    然后把 extension="protobuf.so"加到配置文件,重启php-fpm即可


    查看是否安装成功

    php -m | grep protobuf



  如果上面这些操作成功,PHP已经可以使用编译好的protobuf啦

  下面我们来安装Protoc

  •    下载地址:https://github.com/protocolbuffers/protobuf/releases (一般选择最新版本)

    执行下载

  • wget https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-x86_64.zip

    解压,安装

  • unzip protoc-3.9.1-linux-x86_64.zip
  • cd protoc-3.9.1
  • ln bin/protoc /usr/bin/proto

    查看protoc版本号

    protoc --version

    编写一个protobuf文件(不再举例,自行编辑)

  • 生成php-protobuf文件

    protoc --php_out=out_dir 编辑成功的文件名.proto

    成功后会生成两个文件 分别为 GPBMetadata,编辑protobuf文件的package目录文件

    使用composer来把文件引入,安装protobuf解析库,开始使用。

  • 简单阐述下 在laravel中使用

    在框架中 可以执行


    protoc --php_out="protobuf/compile" "protobuf/comment.proto"


    (第一个路径为 生成文件的位置,二个为操作文件的位置)


    然后执行composer安装laravel中解析protobuf的相关库

  • composer require "google/protobuf"





    然后再composer.json文件中配置如下:

"autoload": {
        "psr-4": {
            "App\\": "app/",
            "Protoc\\": "protobuf/compile/Protoc",//生成到的位置
            "GPBMetadata\\": "protobuf/compile/GPBMetadata"
        }
    }

在控制器中使用

use Protoc\Comment;//引入生成的文件

public function testSendProtobuf()
{
     $from = new Comment();
     $from->setId(1);
     $from->setText('Hello World!');
     $from->setCreatedAt(date('Y-m-d h:i:s', time()));

     $packed = $from->serializeToString();
     return $packed;
}
public function testReceiveProtobuf(Request $request)
{
     $parsedComment= new Comment();
     $parsedComment->mergeFromString($request->getContent());
     return $parsedComment->getId();
}

配置好相关路由 调用下看看结果如何。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议