基於php的json rpc原理及應用

2021-06-29 10:07:14 字數 2335 閱讀 3592

json rpc

是一種以json為訊息格式的遠端呼叫服務,它是一套允許執行在不同作業系統、不同環境的程式實現基於internet過程呼叫的規範和一系列的實現。這種

遠端過程呼叫

可以使用

作為傳輸協議

,也可以使用其它傳輸協議,傳輸的內容是json訊息體。

下面我們code一套基於php的rpc框架,此框架中包含rpc的服務端server,和應用端client;

class jsonrpcserver 

// reads the input data

$request = json_decode(file_get_contents('php://input'),true);

// 執行請求類中的介面

try else

} catch (exception $e)

// json 格式輸出

if (!empty($request['id']))

return true;

}}

<?php

/* */

class jsonrpcclient

/***

* @param boolean $notification

*/public function setrpcnotification($notification)

/*** @param $method

* @param $params

* @return bool

* @throws exception

*/public function __call($method,$params)

if (is_array($params)) else

if ($this->notification) else

// 拼裝成乙個request請求

));// 關鍵幾部

$context = stream_context_create($opts);

if ( $result = file_get_contents($this->url, false, $context)) else

// 輸出除錯資訊

if ($this->debug)

// 檢驗response資訊

if (!$this->notification)

if (!is_null($response['error']))

return $response['result'];

} else

}}?>

(1)服務端 server.php

<?php

require_once 'jsonrpcserver.php';

// member 為測試類

require 'member.php';

// 服務端呼叫

$myexample = new member();

// 注入例項

jsonrpcserver::handle($myexample)

or print 'no request';

?>

(2)測試類檔案,member.php

class member

}

(3)客戶端 client.php

// 客戶端呼叫

try catch (exception $e)

JsonRpc的基礎用法

jsonrpc 主要用於同一主機不同程序間通訊,只需要編寫配置檔案,就能生成兩個介面用於兩個程序通訊。注 使用該功能必須先安裝jsonrpc庫,該庫依賴於jsoncpp,同時需要安裝scons與cmake。編寫環境 linux作業系統,c 語言,g 編譯器 編寫配置檔案,配置檔案是json格式,例子...

ThinkPHP內建jsonRPC的缺陷分析

最近在開發ios應用,要開發ios應用,當然要用到伺服器,用伺服器必然要選用遠端呼叫協議,因為之前本人一直都是用php開發的,所以選用thinkphp當框架的apache伺服器.至於遠端呼叫協議,經過思考,還是選用jsonrpc吧,比較簡單方便,翻了一下thinkphp 是3.2版本 的手冊,發現t...

PHP的執行原理

1.我們從未手動開啟過php的相關程序,它是隨著apache的啟動而執行的 2.php通過mod php5.so模組和apache相連 具體說來是sapi,即伺服器應用程式程式設計介面 3.php總共有三個模組 核心 zend引擎 以及擴充套件層 4.php核心用來處理請求 檔案流 錯誤處理等相關操...