yar安装与使用过程中遇到问题总结

  • Yar 简介
    • 官方文档
    • yar安装
    • yar运行时的默认配置
    • yar常量
    • 使用范例
    • 遇到的问题
    • 应用流程

Yar 简介

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

官方文档

yar官方文档地址点击查看。
github源码查看

yar安装

这里介绍两种基本安装方法
方法一:
Yar是PECL扩展,因此您可以通过以下方式简单地安装它:

pecl install yar

方法二:
编译安装:

wget -c http://pecl.php.net/get/yar-2.0.4.tgz
$/path/to/phpize
$./configure --with-php-config=/path/to/php-config/
$make && make install
在php.ini 里添加如下内容.
extension=yar.so

安装完成后

执行php -m 就可以查看到了

yar运行时的默认配置

yar.timeout //默认5000(ms)
yar.connect_timeout //默认1000(ms)
yar.packager //默认“php”,当使用--enable-msgpack构建然后默认为“msgpack”时,它应该是“php”,“json”,“msgpack”之一
yar.debug //默认关闭
yar.expose_info //默认开,是否输出GET请求的API信息
yar.content_type //默认“application / octet-stream”
yar.allow_persistent //默认关闭

注意 yar.connect_time是一个以毫秒为单位的值,在1.2.1及之前以秒为单位进行测量。

yar常量

YAR_VERSION
YAR_OPT_PACKAGER
YAR_OPT_PERSISTENT
YAR_OPT_TIMEOUT
YAR_OPT_CONNECT_TIMEOUT
YAR_OPT_HEADER //从2.0.4开始

使用范例

基本方法

Yar_Server //The Yar_Server class
Yar_Server::__construct() //创建一个HTTP RPC Server
Yar_Server::handle() //启动HTTP RPC ServerYar_Client  //The Yar_Client class
Yar_Client::__call()  //调用远程服务
Yar_Client::__construct()  //创建一个客户端实例
Yar_Client::setOpt() //设置调用的配置
eg:
//Set timeout to 1s
$client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000);//Set packager to JSON
$client->SetOpt(YAR_OPT_PACKAGER, "json");Yar_Concurrent_Client  //The Yar_Concurrent_Client class
Yar_Concurrent_Client::call() //注册一个并行的服务调用
Yar_Concurrent_Client::loop() //发送所有注册的并行调用
Yar_Concurrent_Client::reset() //Clean all registered calls
eg:
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback");
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"));   // if the callback is not specificed, // callback in loop will be used
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_PACKAGER => "json"));//this server accept json packager
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_TIMEOUT=>1));//custom timeout Yar_Concurrent_Client::loop("callback", "error_callback"); //send the requests, //the error_callback is optionalYar_Server_Exception //The Yar_Server_Exception class
Yar_Server_Exception::getType() //获取异常的原始类型Yar_Client_Exception  //The Yar_Client_Exception class
Yar_Client_Exception::getType() //The getType purpose

具体使用方法可以参考这篇文章点击查看

遇到的问题

  • 超时问题
    yar RPC请求默认超时设置为 5s,因此在客户端任务请求时,若果5s内没有得到响应,请求会持续5s

修改超时时间有两种方式 (时间单位:毫秒)
1.采用ini_set()方法实现对php.ini的动态修改
ini_set("yar.timeout",60000);
2.在yar注册服务方法种进行修改
Yar_Concurrent_Client::call(“http://localhost“, “some_method”, array(“parameters”), “callback”, NULL, array(YAR_OPT_TIMEOUT=>1));
自己测试超时时间设置为低于200毫秒时,有一定机率出现请求失败。

  • 多次请求问题

在用到多次并发请求时,后续请求的结果会包含上一次请求的数据
调用Yar_Concurrent_Client::Reset()清空第一次的请求结果,要求yar版本>=1.2.4

应用流程

简单流程图描述:

浏览器
服务器 client
yar服务端 Server
服务器yar统一请求入口
解析路由注册yarServer端
调用yar客户端
请求服务端

[Yar] yar安装与使用过程中遇到问题总结相关推荐

  1. Cordova安装与配置过程中出现的问题及解决办法

    最近在学习jQuery Mobile,在配置环境的过程中,遇到了一些问题,看百度这方面的资料挺少的,就自己总结一下了 1,在安装Cordova CLI过程中,提示出错,基本上是网速的问题,多安装几遍就 ...

  2. # Windows下关于安装Geany编辑器过程中的一点小发现(可能对初次安装的人有用)

    首先,我们在安装geany的过程中需要先搜索进入geany的官网 http://geany.org/ 进入之后我们需要找到我们需要的版本(此处默认以最新版为例) 先从菜单栏处的Download进入Re ...

  3. Msc.Marc安装和使用过程中遇到证书错误——处理办法

    Msc.Marc安装和使用过程中遇到证书错误--处理办法 1:确定电脑的license安装正确,需要把C盘license中的host改为你的主机名,然后设置一下环境变量. 右击"我的电脑&q ...

  4. 探讨:在Mac新系统下安装新版XAMPP过程中遇到到的坑以及解决办法

    探讨:在Mac新系统下安装新版XAMPP过程中遇到到的坑以及解决办法 简介 XAMPP安装 XAMPP 是个啥? 安装XAMPP 新版问题:IP地址访问不再是localhost 操作问题:apache ...

  5. 安装vue-devtools的过程中遇到问题,以及最后解决问题正确安装

    我在安装vue-devtools的过程中遇到的问题 所参照的安装教程:https://blog.csdn.net/cx_carol/article/details/106874788 (按照这个教程安 ...

  6. 安装mysql5.7出现问题_本地安装Mysql5.7过程中出现的一系列问题

    个人安装过程中出现的问题 出现找不到data文件夹的情况 主要是因为路径写的不对,例如配置文件中的变量 basedir=G:\software\mysql\mysql-5.7.28-winx64 应该 ...

  7. 第一次安装Intellij IDEA过程中遇到的坑

    本人今天一整天都在解决idea的问题,过程虽然很痛苦,但是结果相当美好.接下来一一叙述今天遇到的问题. 下载idea社区版:如果你是有工作经验的开发人员,那么,这个社区版用着相当痛苦,里面有好多插件都 ...

  8. 【转】Postman系列一:Postman安装及使用过程中遇到的问题

    一:Postman的简介.下载安装及界面说明 1.Postman的简单介绍 Postman是一款强大的网页调试和发送网页HTTP请求的工具,Postman让开发和测试人员做API(接口)测试变得更加简 ...

  9. as安装过程中gradle_在安装钢结构平台过程中需要注意哪些事项?

    钢制平台货架是在厂房面积有限的情况下采用货架作为阁楼支撑,并可以设计多层(通常2-3层)的存储货架,阁楼可以采用楼梯或者液压升降平台做为登高设施,利用金属专用楼板作为楼层区分,每层可以放置不同物品的货 ...

最新文章

  1. 张仰彪第二排序法_十大排序之冒泡和选择排序
  2. Spring3 表达式语言(SpEL)介绍
  3. 【Python】Python常用的Series 和 Dataframe处理方法
  4. 国家自然基金标书申报体会
  5. Java8 EnumMap 源码分析
  6. 入门级前端 简单的网页书写
  7. 给一个元素插入一段HTML
  8. iDempiere = OSGi + ADempiere 一款ERPCRMSCM系统、助力中小企业发展
  9. Android 控件之RatingBar评分条
  10. pymol怎么做底物口袋表面_如何系统的去做有机合成工艺优化---之实战策略
  11. 如何启动Intel VT-X及合理利用搜索
  12. 平滑滤波器模板尺寸与平滑效果的关系_冲压模具丨折弯尺寸、毛刺、、卯合、滑块不顺的根源...
  13. 《吴军-信息论40讲》摘录
  14. 物联网--解决ESP8266与电脑串口通讯
  15. 【8001】解决打开idea出现红色感叹号报错信息Cannot find keymap Windows copy?
  16. 量子通信,永不陷落的安全堡垒?
  17. Python实现Excel拆分操作
  18. 递推计算小白兔拔萝卜问题的最有矩阵
  19. ui设计-文案(CW)
  20. 新手引导的界面部分操作区域的处理(一)

热门文章

  1. ARCGIS9.3安装说明
  2. npz文件转为npy_numpy的文件存储.npy .npz 文件详解
  3. AIX 部分故障判断及解决方法
  4. 矢量 报表 html,矢量文件是啥意思
  5. WIN10升级后,点击桌面图标无反应,鼠标滑到任务栏转圈,单击右键白屏闪烁。
  6. 王者荣耀国际服服务器维护中,王者荣耀国际版一个设定解决干得漂亮问题,网友:求王者荣耀快出...
  7. 汽车LED大灯远近光切换方案
  8. springboot 启动报错Field XXX required a bean of type XXX that could not be found的解决方案总结
  9. centos history历史命令添加时间戳
  10. 我在b站过考试周:计算机类期末救急网课汇总