gRPC的PHP客戶端

2021-09-19 06:04:34 字數 3168 閱讀 4595

因為工作需求使用grpc,這裡的服務端採用 go ,客戶端有php,go 。服務端的部署這裡就不寫了,只寫php的客戶端。本人使用的是windows10,不過linux的操作流程基本一樣。

解壓後得到,在bin資料夾下的 protoc.exe。我放到 d:\protoc\protoc.exe 下,並加入到系統環境變數 path 中,就可以使用 protoc 命令了,可以用 protoc --version 來檢視是否成功。(這一步很重要用於生成 protobuf 檔案對應的 php** 用的)

2、編寫 protocol buffers 檔案

如何編寫請看 protobuf3語言指南 寫得不錯,首先建立乙個為 testgrpc_com 專案,我這的位置是 e:\www\testgrpc_com ,在專案下簡單寫了乙個 xuexitest.proto ,

syntax = "proto3";  // 指定proto版本

package xuexitest; // 指定包名

//定義 xuexitest 服務

service xuexitest

}//testrequest 請求結構

message testrequest

//testreply 響應結構

message testreply

repeated getdata getdataarr = 1;

}

php的grpc擴充套件:

php的protobuf擴充套件: 

注:1、php的protobuf擴充套件沒有windows版本的,但不影響使用無非就是執行速度慢點。(使用 composer 載入 protobuf 類庫,請看下面的 composer.json 配置檔案)

注:2、如何安裝php擴充套件,這裡就不講了。

4、編譯 protocol buffers 檔案

編譯 xuexitest.proto 使用 protoc --php_out=.  xuexitest.proto 會生成得到:

5、使用 php 的 composer

首先 安裝 composer 來管理和載入php的類庫,如何安裝這裡就不講了。(這一步也很重要用於解決 grpc和 protobuf 的php類庫依賴)

在專案下編寫 composer.json 放到剛剛編譯 protocol buffers 檔案同級下

7、定義php的grpc端戶端

在專案的 xuexitest 資料夾中,新建 xuexitestclient.php 檔案

<?php 

namespace xuexitest;

/** * service xuexitest{}

* 編寫 (gprc 定義 xuexitest 服務)的客戶端

*/class xuexitestclient extends \grpc\basestub

/*** rpc saytest(testrequest) returns (testreply) {}

* 方法名盡量和 (gprc 定義 xuexitest 服務)的方法一樣

* 用於請求和響應該服務

8、編寫php執行檔案在專案下 新建 xuexitest.php

<?php 

//引入 composer 的自動載加

require __dir__ . '/vendor/autoload.php';

//用於連線 服務端

$client = new \xuexitest\xuexitestclient('127.0.0.1:50052', [

'credentials' => grpc\channelcredentials::createinsecure()

]);//例項化 testrequest 請求類

$request = new \xuexitest\testrequest();

$request->settypeid(1);

//呼叫遠端服務

$get = $client->saytest($request)->wait();

//返回陣列

//$reply 是 testreply 物件

//$status 是陣列

list($reply, $status) = $get;

//陣列

$getdata = $reply->getgetdataarr();

foreach ($getdata as $k=>$v)

9、趕快執行下

這是源**:

瘦客戶端 胖客戶端 智慧型客戶端

胖客戶端模式將應用程式處理分成了兩部分 由使用者的桌面計算機執行的處理和最適合乙個集中的伺服器執行的處理。乙個典型的胖客戶端包含乙個或多個在使用者的pc上執行的應用程式,使用者可以檢視並運算元據 處理一些或所有的業務規則 同時提供乙個豐富的使用者介面做出響應。伺服器負責管理對資料的訪問並負責執行一些...

胖客戶端 瘦客戶端和富客戶端

以c s結構開發的網路應用程式,需要為客戶端開發專用的客戶端軟體,相對而言其客戶端比較龐大,在客戶端可以實現很多功能,分擔伺服器的負擔,屬於胖客戶端型別。以b s結構開發的web應用,其客戶端只是乙個瀏覽器,所有業務邏輯由伺服器端進行處理,相對而言客戶端比較瘦小,故稱為瘦客戶端。目前比較流行的一種開...

微服務從grpc到客戶端再到服務端

proto檔案如下 message prodholdinginforequest oneof check pageno oneof check pagelength oneof check total string sort 1005 排序條件 oneof check czr oneof check...