php 常用rpc框架,php的轻量级rpc框架yar
php的輕量級rpc框架yar
目的:類方法的遠程調用,也就是一個rpc請求。
RPC本質上也是一個網絡請求,既然是請求,對于效率來說,就需要考慮了。yar是基于http來做的。
使用場景:多個項目共享model
總的來說這種調用代價挺好的,因為有網絡開銷。
其實咱們也可以采用其他方式替代
使用的時候注意安全問題。比如只支持內網調用。pecl?install?yar
yar的特點:能夠實現多個請求并發。
如何使用:本地的server說明:
server?url地址??http://other.program.php/php-library/source/yar/model/yar_server.php
sever代碼:
$server?=?new?Yar_Server(new?MyYarServer());
$server->handle();
client?url地址:http://other.program.php/php-library/source/yar/pc_yar.php
client代碼:
$pc_client?=?new?Yar_Client($server_url);
$id?=?12;
//就像調用本地方法一樣
$pc_client->SetOpt(YAR_OPT_CONNECT_TIMEOUT,?1000);
$res?=?$pc_client->getData($id);
print_r($res);
client的并行調用,是采用curl的方式實現的
function?callback($retval,?$callinfo)?{
var_dump($retval,$callinfo);
}
function?error_callback($type,?$error,?$callinfo)?{
error_log($error);
}
$server_url?=?"http://other.program.php/php-library/source/yar/model/yar_server.php";
Yar_Concurrent_Client::call($server_url,?"getData",?array("1"),?"callback");
Yar_Concurrent_Client::call($server_url,?"getData",?array("2"));//?if?the?callback?is?not?specificed,
//?callback?in?loop?will?be?used
Yar_Concurrent_Client::call($server_url,?"getData",?array("3"),?"callback",?NULL,?array(YAR_OPT_PACKAGER?=>?"json"));
//this?server?accept?json?packager
Yar_Concurrent_Client::call($server_url,?"getData",?array("11"),?"callback",?NULL,?array(YAR_OPT_TIMEOUT=>1));
Yar_Concurrent_Client::loop("callback","error_callback");
優點:這些調用通過擴展的c代碼實現,簡單高效
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的php 常用rpc框架,php的轻量级rpc框架yar的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java不朽神迹,不朽的神迹 Etern
- 下一篇: PHP防QQ列表右划,react nat