Yar

简介

Yar 是一个轻量级, 高效的RPC框架, 它提供了一种简单方法来让PHP项目之间可以互相远程调用对方的本地方法. 并且Yar也提供了并行调用的能力. 可以支持同时调用多个远程服务的方法.

**需求 **

如果需要使用Msgpack作为打包协议, 则需要在configure的时候加上--enable-msgpack, 并且要保证Msgpack扩展也安装到PHP内.

运行时配置

  • yar.packager string 设置Yar的打包工具, 可以是PHP(serialize), JSON, Msgpack(这个需要编译的时候指定--enable-msgpack).

  • yar.debug string 打开的时候, Yar会把请求过程的日志都打印出来(到stderr).

  • yar.connect_timeout integer 连接超时(毫秒为单位)

  • yar.timeout integer 处理超时(毫秒为单位)

  • yar.expose_info bool 如果关闭, 则当通过浏览器访问Server的时候, 不会出现Server Info信息.

Yar Server示例


<?php

/* 假设这个页面的访问路径是: http://example.com/operator.php */

class Operator {

    /**
     * Add two operands
     * @param interge 
     * @return interge
     */
    public function add($a, $b) {
        return $this->_add($a, $b);
    }

    /**
     * Sub 
     */
    public function sub($a, $b) {
        return $a - $b;
    }

    /**
     * Mul
     */
    public function mul($a, $b) {
        return $a * $b;
    }

    /**
     * Protected methods will not be exposed
     * @param interge 
     * @return interge
     */
    protected function _add($a, $b) {
        return $a + $b;
    }
}

$server = new Yar_Server(new Operator());
$server->handle();
?>

通过浏览器访问(GET请求)

4fd86c7f1b197d1d954ad0f4b033dc93-yar.png

** Yar Client示例**

<?php
$client = new yar_client("http://example.com/operator.php");

/* call directly */
var_dump($client->add(1, 2));

/* call via call */
var_dump($client->call("add", array(3, 2)));


/* __add can not be called */
var_dump($client->_add(1, 2));
?>

** Yar Concurrent Client示例**

<?php
function callback($ret, $callinfo) {
    echo $callinfo['method'] , " result: ", $ret , "\n";
}

/* 注册一个异步调用 */
Yar_Concurrent_Client::call("http://example.com/operator.php", "add", array(1, 2), "callback");
Yar_Concurrent_Client::call("http://example.com/operator.php", "sub", array(2, 1), "callback");
Yar_Concurrent_Client::call("http://example.com/operator.php", "mul", array(2, 2), "callback");

/* 发送所有注册的调用, 等待返回, 返回后Yar会调用callback回掉函数 */
Yar_Concurrent_Client::loop();
?>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,064评论 19 139
  • =========================================================...
    lavor阅读 8,862评论 0 5
  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 17,212评论 1 51
  • 自 11 月后端结构调整正式启动已有月余,效果初现;PHP Yar(Yet Another RPC Framewo...
    michael_jia阅读 5,291评论 0 2
  • 星期六早上爸爸带着我和哥哥去爬山。到了平顶山下我的爸爸把车停好,停好车后我和爸爸、哥哥都下了车,我和爸爸和哥哥先开...
    张耀涵阅读 3,685评论 0 0

友情链接更多精彩内容