php的轻量级rpc框架yar

标签: php 框架 rpc
2114人阅读 评论(0) 收藏 举报
分类:

php的轻量级rpc框架yar

目的:

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

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

使用场景:

多个项目共享model
总的来说这种调用代价挺好的,因为有网络开销。
其实咱们也可以采用其他方式替代

使用的时候注意安全问题。比如只支持内网调用。

yar的安装
官网详细介绍页面

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+yar+apache+windows7

php 下载地址 http://php.net/downloads.php 选择Windows downloads 下载自己需要的版本 解压缩文件,根目录下有两个文件 php.ini-devel...
  • jsshaojinjie
  • jsshaojinjie
  • 2016-08-05 15:48:05
  • 1265

通过 yar 初识RPC

laruence/yar: Light, concurrent RPC framework for PHP & C 鸟哥的轻量级可支持并发的 rpc 框架,基于此初识 RPC 的工作原理,及其作用…编...
  • w_yunlong
  • w_yunlong
  • 2017-07-26 17:34:11
  • 480

YAR 并行RPC框架研究

前几天,部门召开了PHP技术峰会 学习会议,大家分别对这次会议的PPT 做了简单的介绍,其中提到了 鸟哥【惠新辰】的一篇PPT《微博LAMP 演变》,如果谁有需要可以去谷歌搜,或者去http://ww...
  • siren0203
  • siren0203
  • 2013-09-03 18:02:55
  • 14466

在Yaf中使用Yar

原文地址:  http://izhengyin.com/detail/18.html 在Yaf中使用Yar 本文提到的两个东西,都是 PHP 大神 惠新宸 的作品。 Ya...
  • z_p_h
  • z_p_h
  • 2016-03-16 17:47:22
  • 2655

中间件rpc 鸟哥 Yar 的原理和基本使用

模块越来越多,业务越来越复杂,RPC 就上场了,在 PHP 的世界里,鸟哥的作品一直备受广大网友的青睐。下面一起学习下鸟哥的 PRC 框架 Yar 。 揭开 Yar 神秘面纱 RPC 采用客户端/...
  • h330531987
  • h330531987
  • 2017-11-07 12:16:59
  • 411

【PHP】远程调用以及RPC框架

前言一个项目,从开始到版本更新,一直到最后的版本维护。功能在不断增多,对应的代码量也在不断增加,也就意味着项目变得更不可维护,这时候,我们需要用拆分的方式将一个项目打散,以便开发团队更好的对项目进行维...
  • diandianxiyu
  • diandianxiyu
  • 2016-08-24 15:15:44
  • 11152

php yar扩展json错误

编译安装php yar扩展时出现下面错误,网上找了找说要安装json扩展,可是不管用,看下/usr/local/src/yar-1.2.5/packagers/json.c文件发现里面会使用ext/j...
  • Jonnter
  • Jonnter
  • 2016-06-30 14:03:34
  • 312

rpc是什么?php中流行的rpc框架有哪些。

什么是rpc框架 先回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 通常我们调用一个p...
  • zxjiayou1314
  • zxjiayou1314
  • 2017-03-28 12:09:13
  • 856

rpc介绍,和PHP常用的rpc框架

什么是rpc框架 先回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 通常我们调用一个P...
  • cs729298
  • cs729298
  • 2017-03-31 16:48:01
  • 2852

rpc以及php使用到的rpc

目录`RPC与PHPRPC、yar:目录 rpc相关知识准备 远程调用原理 远程调用和Socket Rest的区别 流行的rpc框架 phprpc实例 yar实例rpc相关知识准备 rpc的全称是...
  • wh2691259
  • wh2691259
  • 2016-08-19 17:07:44
  • 2227
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 18万+
    积分: 4139
    排名: 9259
    博客专栏