grpc初體驗:Go服務端、php客戶端
grpc初體驗:Go服務端、php客戶端
資訊
1、[email protected]
2、[email protected]
3、[email protected]
4、[email protected]
準備工作
安裝Go
安裝php
安裝php擴充套件:grpc 、protobuf (可不安裝)
生成protoc、grpc_php_plugin可執行檔案
生成protoc、grpc_php_plugin可執行檔案
git clone -b v1.41.1 https://github.com/grpc/grpc.git
cd grpc
git submodule update --init
mkdir -p cmake/build
cmake ../..
make protoc grpc_php_plugin
cp cmake/build/third_party/protobuf/protoc-3.17.3.0 /usr/local/protoc
cp cmake/build/grpc_php_plugin /usr/local/grpc_php_plugin
ps:網上很多資料不是這麼做的,但我測試時候那些方法不好使了
protoc所在目錄:cmake/build/third_party/protobuf/protoc-3.17.3.0
grpc_php_plugin所在目錄:cmake/build/grpc_php_plugin
demo流程簡介
mkdir grpc-demo
cd grpc-demo
mkdir go php protos
cd protos
vim hello.proto [1] //定義服務端方法
生成Go服務端程式碼:protoc protos/hello.proto --go_out=plugins=grpc:go
組冊Message服務
生成php客戶端程式碼:protoc protos/hello.proto --php_out=php --grpc_out=php --plugin=protoc-gen-grpc=/usr/bin/grpc_php_pluginphp_out:php程式碼輸出路徑,生成 request 、response、client程式碼
grpc_out:GPBMetadata輸出路徑,用於儲存.proto的二進位制元資料
plugin:生成程式碼外掛的絕對路徑編寫請求客戶端
測試:啟動服務:go run go/main.go 請求服務:php php/hello.php
備註
hello.proto 編寫使 需要定義 package
服務端和客戶端程式碼生成時,package 可根據情況進行修改Go服務端:package pb
php客戶端:App.Message,可根據自己的名稱空間進行自定義。生成後,程式碼的名稱空間不能修php 第三方庫:grpc/grpc、google/protobuf
google/protobuf 可用php擴充套件代替
[參考資料]
[1]:https://github.com/grpc/grpc/tree/master/src/php "protoc和grpc_php_plugin生成文件"
[2]:https://www.cnblogs.com/lovezbs/p/13382025.html "參考例項"
[3]:https://www.bookstack.cn/read/eddycjy-grpc/2138a6a48029f32c.md#exooxl "Go客戶端"
[4]:https://gitee.com/fjgh/grpc-demo "demo 程式碼倉庫"