php 常用rpc框架,php的轻量级rpc框架yar
php的輕量級(jí)rpc框架yar
目的:類方法的遠(yuǎn)程調(diào)用,也就是一個(gè)rpc請(qǐng)求。
RPC本質(zhì)上也是一個(gè)網(wǎng)絡(luò)請(qǐng)求,既然是請(qǐng)求,對(duì)于效率來說,就需要考慮了。yar是基于http來做的。
使用場景:多個(gè)項(xiàng)目共享model
總的來說這種調(diào)用代價(jià)挺好的,因?yàn)橛芯W(wǎng)絡(luò)開銷。
其實(shí)咱們也可以采用其他方式替代
使用的時(shí)候注意安全問題。比如只支持內(nèi)網(wǎng)調(diào)用。pecl?install?yar
yar的特點(diǎn):能夠?qū)崿F(xiàn)多個(gè)請(qǐng)求并發(fā)。
如何使用:本地的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;
//就像調(diào)用本地方法一樣
$pc_client->SetOpt(YAR_OPT_CONNECT_TIMEOUT,?1000);
$res?=?$pc_client->getData($id);
print_r($res);
client的并行調(diào)用,是采用curl的方式實(shí)現(xiàn)的
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");
優(yōu)點(diǎn):這些調(diào)用通過擴(kuò)展的c代碼實(shí)現(xiàn),簡單高效
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的php 常用rpc框架,php的轻量级rpc框架yar的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java不朽神迹,不朽的神迹 Etern
- 下一篇: aqs java 简书,Java AQS