rpc
(remote procedure call),遠端過程呼叫。是一種程序間通訊技術,允許程式像呼叫本地方法一樣呼叫遠端服務。
rpc
遮蔽了資料打包、網路通訊的細節,使得使用者只需要關注於服務呼叫,而服務呼叫又像呼叫本地方法一樣自然。
php有個yar
擴充套件,提供了rpc
服務端和客戶端的功能。
$ pecl install yar
稍候片刻,即可裝好。
extension=yar.so
目前只需要關注yar提供的兩個類就行了:yar_server
和yar_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 ...