php的轻量级rpc框架yar

原创 2016年08月30日 15:44:27

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代码实现,简单高效
版权声明:本文为博主原创文章,未经博主允许不得转载。

YAR 并行RPC框架研究

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

在Yaf中使用Yar

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

如何实现PHP异步调用或者说并行计算

需求 当一个用户给多个好友发送邀请邮件时,当一个请求需要从很多个数据库中读取数据时,当一个页面需要大量计算又想快速响应时,我们都希望php能够做到异步执行, 即并发地发邮件,并行地从多个数据库取数据,...

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

RPC(Remote Procedure Call Protocol)——远程过程调用协议

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

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

用phpspider框架做爬虫分析旅游数据

https://github.com/owner888/phpspider 随着物质的提高,旅游渐渐成为人们的焦点,火热的国庆刚刚过去,乘着这股余热,我想很多人都想知道,大家一般会去哪里玩呢,于是我花...

[Guzzle] PHP HTTP 客户端和框架

Guzzle是一个PHP HTTP 客户端和框架,用于构建 RESTful web service 客户端。 All the power of cURL with a simple interfa...

三种主流Web架构

做WEB好几年了,各种语言和技术都稍有涉猎。今天心血来潮,突然想总结一下。其实不论什么技术,什么需求,通常WEB开发就是通过WEB前端管理一个或大或小或独立或分布式的关系型数据库,很多东西都是相通的。...
  • zxxSsdsd
  • zxxSsdsd
  • 2016年05月13日 15:48
  • 12711

高并发Web架构

在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段。 它们的含义是: ...

yar框架的并行原理分析(libcurl+epoll)

yar是一个轻量级的php rpc框架。有意思的是它的并行,其实就是libcurl作为网络库提供http请求,然后用epoll做为事件监听来实现整个异步并行调用的。在此基础上,就是如何利用zend a...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php的轻量级rpc框架yar
举报原因:
原因补充:

(最多只允许输入30个字)