• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP使用protobuf

php 搞代码 4年前 (2022-03-01) 52次浏览 已收录 0个评论

服务器环境Ubuntu 18.04.5 LTS
PHP7.2.24

装置protoc

1.获取v3.13.0.1(截止2020.10.14)
wget https://codeload.github.com/protocolbuffers/protobuf/tar.gz/v3.13.0.1
2.解压
tar zxvf v3.13.0.1 
cd protobuf-3.13.0.1

1.生成 configure 脚本;
./autogen.sh
2.编译装置
./configure --prefix=/usr/local/protobuf
make && make install
3.设置全局
export PATH=/usr/local/protobuf/bin:$PATH
4.查看装置胜利
protoc  --version
呈现`libprotoc 3.13.0`即装置胜利

装置php-protobuf拓展

pecl install protobuf

接下来,将
`extension=protobuf.so`增加到 `php.ini` 文件(例如 `/etc/php/7.2/fpm/php.ini`)中。

查看php.ini地位
1.cli命令行 php --ini
2.phpinfo();
3.ps -ef | grep php

在我的项目根目录

protoc --php_out="protobuf/compile" "protobuf/protos/DmpDataProto.proto"

生成的构造

├── compile
│   ├── GPBMetadata
│   │   └── Protobuf
│   │       └── Protos
│   │           └── DmpDataProto.php
│   └── Toutiao
│       └── Dmp
│           ├── DmpData.php
│           ├── IdItem_DataType.php
│           └── IdItem.php
└── protos
    └── DmpDataProto.proto

composer

composer require  google/protobuf:^3.3

composer.json配置

"autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/",
            +"Toutiao\\":"protobuf/compile/Toutiao",
            +"GPBMetadata\\":"protobuf/compile/GPBMetadata/Protobuf/Protos"
        }
    },

应用

//获取序列化的一行
public function decodeOneLine($line)
{
    $idItem = new \Toutiao\Dmp\IdItem();
    $idItem->setDataType(\Toutiao\Dmp\IdItem_DataType::IMEI);
    $idItem->setId(strtolower($line));
    $idItem->setTags('IMEI');
    $binaryString = $idItem->serializeToString();
    return $binaryString;
}
//获取反序列化的一行
public function decodeOneLine($line)
{
    $item = new \Toutiao\Dmp\IdItem();
    $item->mergeFromString($line);
    return $item->getId();
}

次要为为了上传头条dmp包,然而头条是protobuf2,emmm今天再看吧
未完待续


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP使用protobuf

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址