久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何進行Yar并行的RPC框架使用分析

199次閱讀
沒有評論

共計 2239 個字符,預計需要花費 6 分鐘才能閱讀完成。

今天就跟大家聊聊有關如何進行 Yar 并行的 RPC 框架使用分析,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

前言:

RPC,就是 Remote Procedure Call 的簡稱呀,翻譯成中文就是遠程過程調用

RPC 要解決的兩個問題:

解決分布式系統中,服務之間的調用問題。

遠程調用時,要能夠像本地調用一樣方便,讓調用者感知不到遠程調用的邏輯

如果模仿 B / S 架構的調用方式,每次調用時,都需要寫一串發起 http 請求的代碼。比如 new Curl()… 之類的,能不能像本地調用一樣,去發起遠程調用,讓使用者感知不到遠程調用的過程。

實際情況下,RPC 很少用到 http 協議來進行數據傳輸,畢竟我只是想傳輸一下數據而已,何必動用到一個文本傳輸的應用層協議。為什么不直接使用二進制傳輸。

安裝:

$ pecl install yar
$ pecl install msgpack

服務端代碼:

?php
require_once  Email.php 
require_once  Sms.php 
class Service
 private $sms;
 private $email;
 public function __construct()
 { $this- sms = new Sms();
 $this- email = new Email();
 }
 /**
 * @param $mobile
 * @return string
 */
 public function sendSms($mobile, $content =  短信內容)
 { return $this- sms- send($mobile, $content);
 }
 /**
 * @param $email
 * @return string
 */
 public function sendEmail($email)
 { return $this- email- send($email);
 }
$service = new Yar_Server(new Service());
$service- handle();

客戶端代碼:

?php
//  一、直接調用
//$client = new Yar_Client( http://192.168.2.138/api/ 
//$client- SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000);
//$result = $client- sendSms( 18234065200 ,  我是短信內容 
//echo $result;
//  二、并行調用
// public static call ( string $uri , string $method [, array $parameters [, callable $callback [, callable $error_callback [, array $options ]]]] )
// callback  回掉函數,  在遠程服務的返回到達的時候被 Yar 調用,  從而可以處理返回內容   如果沒有設置則調用 loop 中的 callback
// error_callback
// $options
Yar_Concurrent_Client::call( http://192.168.2.138/api/ ,  sendSms , [ 18234065200 ,  歡迎注冊 
Yar_Concurrent_Client::call(http://192.168.2.138/api/ ,  sendEmail , [ 12580@qq.com],  callback ,  callError , [YAR_OPT_TIMEOUT =  10]);
//  發送請求
// public static loop ([ callable $callback [, callable $error_callback ]] )
Yar_Concurrent_Client::loop( loopCallback ,  loopError 
function callback($retval, $callinfo)
 echo  call 自己的回調: . $callinfo[method] .  方法返回數據  . $retval . PHP_EOL;
//  錯誤回掉函數,  如果設置了, Yar 在發送出所有的請求之后立即調用一次這個回掉函數 (此時還沒有任何請求返回),  調用的時候 $callinfo 參數是 NULL
function loopCallback($retval, $callinfo)
 if (is_null($callinfo)) {
 echo  所有 rpc 請求發送完畢調用  . PHP_EOL;
 } else {
 echo  調用成功后返回  . PHP_EOL;
 var_dump($retval);
 var_dump($callinfo);
 }
//  錯誤回調
function callError()
 echo  發送 rpc 出錯  . PHP_EOL;
//  錯誤回掉函數,  如果設置了,  那么 Yar 在出錯的時候會調用這個回掉函數
function loopError()
 echo  發送 rpc 出錯  . PHP_EOL;
}

看完上述內容,你們對如何進行 Yar 并行的 RPC 框架使用分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-04發表,共計2239字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 平邑县| 阳江市| 雷州市| 资源县| 洛阳市| 宁乡县| 武功县| 阜新市| 铁岭县| 涿州市| 曲周县| 遵化市| 岑巩县| 商城县| 武川县| 南部县| 河南省| 大同县| 大新县| 扎鲁特旗| 阳新县| 洱源县| 扬中市| 罗田县| 仁布县| 伽师县| 岳西县| 柘城县| 兴安县| 防城港市| 正镶白旗| 黄骅市| 青河县| 海伦市| 兴和县| 汉中市| 田阳县| 临朐县| 农安县| 涟源市| 正定县|