博主信息
博文 1
粉丝 0
评论 0
访问量 3187
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
Protobuf在PHP中使用
昵称的博客
原创
3197人浏览过
  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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学