Yar 搭建RPC服务

一、安装 Yar

类方法的远程调用,也就是一个rpc请求。

RPC本质上也是一个网络请求,既然是请求,对于效率来说,就需要考虑了。yar是基于http来做的。

特点:能够实现多个请求并发。
优点:这些调用通过扩展的c代码实现,简单高效

pecl install yar

pecl install msgpack

安装yar过程若提示libcurl需要reinstall,

wget https://curl.haxx.se/download/curl-7.62.0.tar.gz
tar zxvf curl-7.62.0.tar.gz
./configure
make&&make install

二、确保 php 加载 yar 模块

~/curl-7.62.0 » php -m |egrep 'yar|msgpack'                                                                                                                                       hushiqiang@EddiedeMacBook-Pro
msgpack
yar

三、编写服务器端 Server.php , 在浏览器打开 http://.../Server.php 可见API的介绍如下

 

<?php
 
class API {
    public function some_method($parameter, $options = "foo") {
        $info = "welcome, {$parameter}, ".$_SERVER['REMOTE_ADDR'];
        return json_encode(array('res' => $info));
    }
 
    public function demo() {
        sleep(1);
        return "123";
    }
}

四、编写客户端 Client.php , 编写完毕可 php Client.php 查看结果

<?php
 
$client = new Yar_Client("http://.../Server.php");
 
$client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000);
 
// $client->SetOpt(YAR_OPT_HEADER, array("hd1: val"));
 
$result = $client->some_method("panguangyu");
 
print_r($result) 
 
// 会显示Server.php中some_method方法执行的结果

五、并发性测试 MultiClient.php , 编写完毕可 php MultiClient.php 查看结果

<?php
 
function callback($retval, $callinfo) {
    echo "success\n";
    var_dump($retval);
    var_dump($callinfo);
}
 
function error_callback($type, $error, $callinfo) {
    echo "error\n";
    error_log($error);
}
 
Yar_Concurrent_Client::call("http://.../Server.php", "demo", array(), "callback", "error_callback");
 
Yar_Concurrent_Client::call("http://.../Server.php", "demo", array(), "callback", "error_callback");
 
Yar_Concurrent_Client::call("http://.../Server.php", "demo", array(), "callback", "error_callback");
 
Yar_Concurrent_Client::loop();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值