PHP probuf详细步骤_初识protobuf和php的相关用法
前言
大家好,這是我在博客園的第一篇博文,很早之前就想嘗試開通技術(shù)博客了,但是由于各種原因計(jì)劃一直都沒有實(shí)施。開通博客只是想簡單的記錄下自己生活工作相關(guān)的一些事情,之前一直在用evernote記錄,無法用更多的人分享一些信息和交流,所以打算開通博客,將之前evernote上記錄的一些經(jīng)歷分享出來和大家一起探討學(xué)習(xí),初步定于每星期更新一篇博文,以后有時(shí)間可以能會(huì)增加更新的頻率,因?yàn)椴唤?jīng)常寫,所以文采可以忽略,有錯(cuò)誤的地方還望大家及時(shí)指正。廢話不多說,下面開始我的第一篇博文
正文
本文主要介紹下php結(jié)合protobuf的一些相關(guān)用法,首先php相信大家都比較了解,它是一門主要用于web開發(fā)的解釋型高級(jí)面向?qū)ο蟮挠?jì)算機(jī)編程語言,其全稱是超文本預(yù)處理器(Hypertext Preprocessor),現(xiàn)在的最新穩(wěn)定版本是7.1。下面重點(diǎn)介紹下protobuf,protobuf是谷歌開源的一種用于數(shù)據(jù)交換的開源協(xié)議,其主要的特點(diǎn)是跨平臺(tái)、跨語言、可擴(kuò)展,它是一種用于序列化結(jié)構(gòu)數(shù)據(jù)的開源協(xié)議。目前業(yè)界在擴(kuò)平臺(tái)、跨語言的領(lǐng)域數(shù)據(jù)交換用的最多的是使用json,但是相較于json,protobuf主要的特點(diǎn)表現(xiàn)為可擴(kuò)展性強(qiáng)、安全性好、速度更快,下面我們就詳細(xì)看下php是怎么結(jié)合protobuf序列化結(jié)構(gòu)數(shù)據(jù)的
1、首先需要在開發(fā)機(jī)上面安裝protobuf,這里建議在github上克隆下來源碼編譯安裝,如要步驟如下:
1)git clone?https://github.com/protocolbuffers/protobuf.git
進(jìn)入到源碼目錄protobuf執(zhí)行autogen.sh文件初始化安裝目錄(注:在執(zhí)行的過程中有時(shí)候回報(bào)錯(cuò),無法執(zhí)行,可能是因?yàn)閍utomake沒有安裝,安裝完automake在執(zhí)行一般就可以了)
2)./authgen.sh
初始化安裝目錄之后就可以看到,當(dāng)前目錄下面有生成configure文件,接下來就是安裝linux下面標(biāo)準(zhǔn)的編譯安裝步驟執(zhí)行就可以了
3)./configure
4)make
5)make install
執(zhí)行完以上操作之后在本地就完成了protobuf的安裝,如果安裝成功可以執(zhí)行protoc --version查看下當(dāng)前安裝的版本
2、接下來就要安裝php的protobuf的擴(kuò)展
1)執(zhí)行以下命令獲取protobuf的php擴(kuò)展源碼
git clone?https://github.com/allegro/php-protobuf.git
2)獲取完源碼之后進(jìn)入到php-protobuf目錄,按如下步驟安裝protobuf的php擴(kuò)展
cd php-protobuf
phpize
make
make install
3)執(zhí)行完以上命令之后,在php的擴(kuò)展目錄下會(huì)生成一個(gè)protobuf.so的動(dòng)態(tài)鏈接庫文件,在php的配置文件中新增extension=protobuf.so的配置,通過php -m命令查看擴(kuò)展是否有生效。
4)最后在php-protobuf的目錄下面執(zhí)行composer install安裝php-protobuf相關(guān)的依賴包
3、完成了以上的準(zhǔn)備工作之后,我們就可以開始正式的php+protobuf的開發(fā)工作了
1)首先我們需要新增protobuf的文件,我們命名為foo.proto,內(nèi)容如下:
syntax = "proto2";
message Foo
{
required int32 bar = 1;
optional string baz = 2;
repeated float spam = 3;
}
這里我們定義了一個(gè)簡單消息類型,其擁有三種數(shù)據(jù)類型
2)接著我們要使用protoc工具將.proto的文件轉(zhuǎn)換成php的代碼,命令如下:
php protoc-gen-php.php foo.proto
執(zhí)行完以上命令之后會(huì)在當(dāng)前目錄下生成一個(gè)Foo.php的文件,這就是我們之前定義的Foo的php類文件,之后直接因?yàn)檫@個(gè)類文件我們就可以操作Foo類了
3)最后我們新增一個(gè)testFoo.php的文件來使用Foo類,代碼如下:
require_once 'Foo.php';$foo = newFoo();$foo->setBar('string');$foo->setBaz(1);$foo->appendSpam(3.0);$foo->appendSpam(4.0);$packed = $foo->serializeToString();$parsedFoo = newFoo();$parsedFoo->clearSpam();try{$parsedFoo->parseFromString($packed);
}catch (Exception $ex) {die('Oops.. there is a bug in this example, ' . $ex->getMessage());
}$parsedFoo->dump();
執(zhí)行這個(gè)文件之后就會(huì)打印如下內(nèi)容:
Foo {
1: bar => 0
2: baz => "1"
3: spam(2) =>
[0] => 3
[1] => 4
}
到此為止我們就完成了一個(gè)基本的php+protobuf的開發(fā)工作,關(guān)于protobuf更多內(nèi)容的以后再詳細(xì)介紹。
謝謝大家,有不對(duì)的地方希望大家多多指正
總結(jié)
以上是生活随笔為你收集整理的PHP probuf详细步骤_初识protobuf和php的相关用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样开个彩票店 不愁没生意的好项目
- 下一篇: 贵阳社保最低缴费基数2018