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核心用來處理請求 檔案流 錯誤處理等相關操...