php 常用rpc框架,php的轻量级rpc框架yar

php的轻量级rpc框架yar

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

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

使用场景:多个项目共享model

总的来说这种调用代价挺好的,因为有网络开销。

其实咱们也可以采用其他方式替代

使用的时候注意安全问题。比如只支持内网调用。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代码实现,简单高效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ABP vNext IOC替换原有Service实现

即 .NET IOC替换原有Service实现背景在使用ABP vNext时,该框架为我们实现了非常多的默认行为,以便开箱即用,但在实际使用中,我们总是需要根据自己的需求定制自己的服务,在.Net框架中,便提供了Service.Repla…

aqs java 简书,Java AQS源码解读

1、先聊点别的说实话,关于AQS的设计理念、实现、使用,我有打算写过一篇技术文章,但是在写完初稿后,发现掌握的还是模模糊糊的,模棱两可。痛定思痛,脚踏实地重新再来一遍。这次以 Java 8源码为基础进行解读。…

仓储模式到底是不是反模式?

【导读】仓储模式我们已耳熟能详,但当我们将其进行应用时,真的是那么得心应手吗?确定是解放了生产力吗?这到底是怎样的一个存在,确定不是反模式?一篇详文我们探讨仓储模式,这里仅我个人的思考&a…

网络工程师必须懂的十五大专业术语!

1、什么时候使用多路由协议? 当两种不同的路由协议要交换路由信息时,就要用到多路由协议。当然,路由再分配也可以交换路由信息。下列情况不必使用多路由协议: 从老版本的内部网关协议( Interior Gateway Protocol&…

dnSpy反编译、部署调试神器

一、概要在工作当中,当程序部署了之后就算打了日志遇到极个别的特殊异常没有在程序日志中体现出来或者没有详细的报错原因会让开发者非常头疼,不得不盲猜bug到底出在哪里。这里分享一下工作上经常会用到的工具,这款工具可以反编译并运行调试已…

java中内边距跟外边距,padding和margin——内边距和外边距

一、padding——内边距(内填充)1.1、padding 简写属性在一个声明中设置所有填充属性。该属性可以有1到4个值。div.outer{width: 400px;height: 400px;border: 2px solid #000;}div.inner{width: 200px;height: 200px;background-color:red ;padding: 50px;}运行效果图&#xff…

AJAX将成为移动Web2.0时代首选开发平台

一、 引言  最近,Opera宣布通过他们的浏览器把AJAX技术应用于移动设备开发中。考虑到Opera浏览器在目前浏览器市场(特别是在移动浏览器市场)的流行性,我们可以预计这一宣布对于整个浏览器市场必然会产生重要影响。从加入到移动服务开发市场几年的经验来看,我相信现…

matlab仿真习题,(MATlab仿真部分习题答案.doc

(MATlab仿真部分习题答案[4.1]控制系统结构如图4.1所示利用MATLAB对以上单位负反馈控制系统建立传递函数;将第一问中求得的传递函数模型转化为零极点增益形式和状态空间形式。解:(1)num[2 2];den[1 2 1];[num1,den1]cloop(num,den);systf(num1,den1)程序运行结果如下…

使用 ML.NET 实现峰值检测来排查异常

机器学习中一类问题称为峰值检测,它旨在识别与大部分时序中明显不同但临时突发的数据值。及时检测到这些可疑的个体、事件或观察值很重要,这样才能尽量减少其产生。异常情况检测是检测时序数据离群值的过程,在给定的输入时序上指向“怪异”或…

如何使用Tasklist命令

Tasklist命令用来显示运行在本地或远程计算机上的所有进程,带有多个执行参数。使用格式Tasklist [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]参数含义/S system 指定连接到的远程系统。/U [domain]user…

PHP防QQ列表右划,react native 实现类似QQ的侧滑列表效果

如果列表行数据需要更多的操作,使用侧滑菜单是移动端比较常见的方式,也符合用户的操作习惯,对app的接受度自然会相对提高点。最近得空就把原来的react-native项目升级了侧滑操作,轻轻松松支持android和ios双平台,效果如…

OpenTelemetry - 云原生下可观测性的新标准

CNCF 简介CNCF(Cloud Native Computing Foundation),中文为“云原生计算基金会”,CNCF是Linux基金会旗下的基金会,可以理解为一个非盈利组织。当年谷歌内部一直用于编排容器的Borg项目开源了,为了该项目更好…

毕业设计——第三章 开发方法及系统实现(5)

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份…

说说 RabbiMQ 的应答模式

RabbiMQ 我们都很熟悉了,是很常用的一个开源消息队列。搞懂 RabbiMQ 的应答模式对我们排查错误很有帮助,也能避免一些坑。本文说说 RabbiMQ 的应答模式。生产者发出一条消息给 RabbiMQ ,RabbiMQ 将消息推送给消费者,消费者处理完消…

php 输出json utf8,php json_encode utf-8中文问题

以前碰到最多的是json_encode是gbk 编码时出现乱码,今天发现uft8也会出现中文乱码了,下面我们一起看问题如何解决吧。utf-8字符json_encode为变成转成utf16编码,也就是介个样子: 代码如下复制代码$ ./php/bin/php -r echo json_en…

2005-5-29+ 认识httphandler

httphandler是做什么的?用任何一个搜索引擎都可以找到一大堆资料,我就不多说了,把我今天学习的一些认识写在这里,希望可以从另一个侧面让大家认识httphandler。所谓httphandler,其实是.net用来处理页面请求的。大家可以…

php oracle 锁表,ORACLE 用户锁定问题

在开发环境下,由于直接修改了数据库用户的密码,之后一直不能连接,及时执行alter user username account unlock 还是提示用户锁定。刚开始只是怀疑是数据库的问题,就一直在数据库上找问题,其实最终的问题是更改密码后&…

微软2020开源回顾:止不住的挨骂,停不下的贡献

喜欢就关注我们吧!2020年,Linus Torvalds 开启“飚骚话”模式,言语不再激烈。看到“大喷子” Linus 都有机会变慈祥,料想微软近年来主动拥抱开源并示好的行为应该能改变他人的看法。然而事实并非如此,虽然微软积极投身…

下午回家啦~

决定回家,今天买火车票也很顺利,晚上七点多就到家了。老爸老妈,还有很多亲人朋友,俺就要见到你们了,激动、开心!

用matlab实现机械臂的仿真,基于MATLAB的SCARA机械臂仿真与性能评估

工业机器人以其代替人类单调繁重的体力劳动,便于实现自动化提高生产效率等优点,而被广泛应用于工程机械、汽车零部件、轨道交通、轻工造纸等行业,具有可观的经济效益。到2015年,中国机器人市场将成世界最大规模的市场。与此同时,它又是融合了多个学科的复杂机电一体化产品。近年…