?? RPC 遠程服務調用插件

v1.5.0
版本
2025-04-01
版本更新時間
2801
安裝
19
star
簡介
什么叫RPC,為什么要RPC,RPC是指遠程過程調用,也就是說兩臺服務器A、B。一個應用部署在A服務器上,想要調用B服務器上應用提供的函數/方法,由于不在一個內存空間,不能直接調用,需要通過網絡來表達調用的語義和傳達調用的數據。
安裝
composer require tinywan/rpc
使用
服務端
新建 service/User.php
服務(目錄不存在自行創(chuàng)建)
namespace service;
class User
{
public function get($args)
{
return response_rpc_json(0, '獲取成功', $args);
}
}
客戶端
基礎使用
// 建立socket連接到內部推送端口
$client = stream_socket_client('tcp://127.0.0.1:9512', $errorCode, $errorMessage);
if (false === $client) {
throw new \Exception('rpc failed to connect: '.$errorMessage);
}
$request = [
'class' => 'user',
'method' => 'get',
'args' => [
[
'uid' => 2023,
'username' => 'Tinywan',
]
]
];
// 發(fā)送數據,注意5678端口是Text協(xié)議的端口,Text協(xié)議需要在數據末尾加上換行符
fwrite($client, json_encode($request)."\n");
// 讀取推送結果
$result = fgets($client, 10240000);
// 解析JSON字符串
$result = json_decode($result, true);
var_export($result);
請求響應結果
{
"code": 0,
"msg": "用戶列表",
"data": {
"uid": 2024,
"username": "Tinywan"
}
}
請求響應異常結果
{
"code": 404,
"msg": "接口調用類不存在",
"data": {}
}
異常錯誤日志
[2024-08-16 14:46:26] default.ERROR:
RPC Service Exception Message SQLSTATE[42S22]:
Column not found: 1054 Unknown column 'to_user_id' in 'where clause'
{"error":"SQLSTATE[42S22]:
Column not found: 1054 Unknown column 'to_user_id' in 'where clause'",
"file":"/var/www/db/PDOConnection.php","line":797} []