摘要:工作中需要使用,服務端采用的,客戶端采用。這里主要講述客戶端。
工作中需要使用gRPC,服務端采用的python,客戶端采用PHP。這里主要講述PHP客戶端。
分為以下幾個部分:
安裝protoc
生成protobuf
安裝PHP擴展
定義客戶端
安裝protoc這里是mac環(huán)境
下載地址:https://github.com/protocolbu...
解壓之后進入目錄,執(zhí)行./autogen.sh
如果報錯的話需要安裝插件brew install automake
再次執(zhí)行./autogen.sh
./configure --prefix=/usr/local/protobuf
make && make install
最后不要忘記配置環(huán)境變量
vim ~/.bash_profile export PROTOBUF=/usr/local/protobuf export PATH=$PROTOBUF/bin:$PATH source ~/.bash_profile
驗證
protoc --version生成protobuf文件
使用服務端的.proto文件,執(zhí)行protoc --php_out=. lottery.proto
syntax = "proto3"; package lotteryservice; service Greeter { rpc lottery(lotteryReq) returns (lotteryRes){} } message lotteryReq { string param = 1; } message lotteryRes { string data = 1; }
會生成如下目錄:
安裝PHP擴展gRPC擴展: http://pecl.php.net/package/gRPC
protobuf擴展: http://pecl.php.net/package/p...
在項目目錄下編寫composer.json
{ "name": "grpc-go-php", "require": { "grpc/grpc": "^v1.3.0", "google/protobuf": "^v3.3.0" }, "autoload":{ "psr-4":{ "GPBMetadata":"GPBMetadata/", "Lotteryservice":"Lotteryservice/" } } }
composer install 之后會生成如下目錄:
在Lotteryservice文件夾中,創(chuàng)建lotteryServiceClient.php
_simpleRequest("/Greeter/lottery", $argument, ["LotteryservicelotteryRes", "decode"], $metadata, $options); } }
創(chuàng)建channel文件夾,在channel文件夾下創(chuàng)建 channels.php文件,獲取client
GrpcChannelCredentials::createInsecure() ]); return $client; } }
在項目目錄下創(chuàng)建app.php,用于測試連接:
lotteryService(); $lotteryRequest = new LotteryservicelotteryReq(); $lotteryRequest->setParam("{"一等獎": 10,"二等獎":20,"三等獎":30,"四等獎":40}"); $lottery_res = $lotteryClient->lottery($lotteryRequest)->wait(); list($reply, $status) = $lottery_res; $data = $reply->getData(); var_dump($data);die;
最后執(zhí)行php app.php
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/31624.html
摘要:緊接上一篇,下面用作為客戶端調(diào)用的服務端。安裝插件插件可以幫助我們自動生成客戶端封裝了的服務接口,方便我們直接引入調(diào)用,否則只生成服務請求響應的實體類,用起來不太方便。打包解包客戶端發(fā)送至服務端服務端接收數(shù)據(jù)后使用對應的實體解包服務端 緊接上一篇,下面用PHP作為客戶端調(diào)用Go的服務端。 安裝 grpc_php_plugin 插件 grpc_php_plugin插件可以幫助我們自動生成...
摘要:帶入及相關(guān)介紹原文地址帶入及相關(guān)介紹項目地址作為開篇章,將會介紹相關(guān)的一些知識。 帶入gRPC:gRPC及相關(guān)介紹 原文地址:帶入gRPC:gRPC及相關(guān)介紹 項目地址:go-grpc-example 作為開篇章,將會介紹 gRPC 相關(guān)的一些知識。簡單來講 gRPC 是一個 基于 HTTP/2 協(xié)議設計的 RPC 框架,它采用了 Protobuf 作為 IDL 你是否有過疑惑,它們都...
摘要:原文地址帶入及相關(guān)介紹項目地址作為開篇章,將會介紹相關(guān)的一些知識。 原文地址:帶入gRPC:gRPC及相關(guān)介紹 項目地址:go-grpc-example 作為開篇章,將會介紹 gRPC 相關(guān)的一些知識。簡單來講 gRPC 是一個 基于 HTTP/2 協(xié)議設計的 RPC 框架,它采用了 Protobuf 作為 IDL 你是否有過疑惑,它們都是些什么?本文將會介紹一些常用的知識和概念,更詳...
摘要:原文地址從實踐到原理,帶你參透在語言中大放異彩,越來越多的小伙伴在使用,最近也在公司安利了一波,希望能通過這篇文章能帶你一覽的愛與恨。幀的主要作用是裝填主體信息,是數(shù)據(jù)幀。 showImg(https://segmentfault.com/img/remote/1460000019552245); 原文地址:從實踐到原理,帶你參透 gRPC gRPC 在 Go 語言中大放異彩,越來越多...
摘要:消息格式有三個字段,在消息中承載的數(shù)據(jù)分別對應于每一個字段。所以應該為那些頻繁出現(xiàn)的消息元素保留之內(nèi)的標識號。示例編譯這里我們用編譯一下,看得到什么文件名使用以下命令編譯生成了兩個文件此文件包含生成的和類。 gRPC 一開始由 google 開發(fā),是一款語言中立、平臺中立、開源的遠程過程調(diào)用(RPC)系統(tǒng)。 本文通過一個簡單的 Hello World 例子來向您介紹 gRPC 。 gR...
閱讀 3035·2023-04-26 03:01
閱讀 3538·2023-04-25 19:54
閱讀 1592·2021-11-24 09:39
閱讀 1374·2021-11-19 09:40
閱讀 4250·2021-10-14 09:43
閱讀 2062·2019-08-30 15:56
閱讀 1490·2019-08-30 13:52
閱讀 1660·2019-08-29 13:05