用Yar擴充套件實現RPC

2021-08-24 18:06:08 字數 2012 閱讀 7260

rpc(remote procedure call),遠端過程呼叫。是一種程序間通訊技術,允許程式像呼叫本地方法一樣呼叫遠端服務。

rpc遮蔽了資料打包、網路通訊的細節,使得使用者只需要關注於服務呼叫,而服務呼叫又像呼叫本地方法一樣自然。

php有個yar擴充套件,提供了rpc服務端和客戶端的功能。

$ pecl install yar
稍候片刻,即可裝好。

extension=yar.so

目前只需要關注yar提供的兩個類就行了:yar_serveryar_client

yar_server
使用方式如下:

$server  = new yar_server(new service());

$server->handle();

yar_client
使用方式如下:

$result = $client->somemethod($arg0, $arg1); // 呼叫rpc服務端中相應物件的 somemethod方法

yar擴充套件的更多介紹見:

下面是乙個在php框架中使用yar建立rpc服務,然後在指令碼中呼叫的例子。

3.1.1 rpc服務類

該類是rpc服務的實際提供者。service.php

<?php 

namespace

class

service

public

function

add($a, $b)

public

function

sub($a, $b)

}

3.1.2 rpc包裝類

yar擴充套件將上面的service類包裝成rpc服務。rpc.php

<?php 

namespace

useclass

rpcextends \think\controller

public

function

index

()

}

rpc服務的訪問路徑是:

用瀏覽器訪問:http://localhost/agent/rpc/index

預設情況下配置yar.expose_info是開著的,安全起見,把它關閉。

yar.expose_info = off
rpc客戶端如下(rpc.php):

命令列中執行rpc客戶端:

$ php rpc.php
輸出如下:

result=6
說明呼叫成功。

RPC框架 yar學習

rpc採用客戶機 伺服器模式。請求程式就是乙個客戶機,而服務提供程式就是乙個伺服器。首先,客戶機呼叫程序傳送乙個有程序引數的呼叫資訊到服務程序,然後等待應答資訊。在伺服器端,程序保持睡眠狀態直到呼叫資訊的到達為止。當乙個呼叫資訊到達,伺服器獲得程序引數,計算結果,傳送答覆資訊,然後等待下乙個呼叫資訊...

mac php安裝 yar擴充套件

前置brew,php這個略過。進入到安裝包內 這個是自己的php路徑 usr local cellar php 7.4 7.4.13 1 bin phpize 重點,指定php配置目錄和curl目錄,在mac上安裝yar擴充套件不指定curl目錄會報錯 configure with php conf...

yii2整合yar實現RPC

近來用yii2開發乙個 系統,裡面用到有關rpc。考慮到yar在這方面效能比較突出,就試著自己搗鼓一下。總的來說,實現起來並不複雜,具體步驟如下。配置 環境 安裝yii2 高階版 參考這裡不再贅述。配置 nginx,設定兩個測試網域名稱。server name yii.test localhost ...