内容简介:最近还是因为疫情,我把Yaf,Yaconf都优化了一轮,今天也完成了Yar的优化(事实上,Yar之前写的就还不错,没啥可优化的,哈哈),也新增了俩个能力。我来简单介绍下:也就是YAR_OPT_PERSISTENT, 这个配置之前一直有,只不过之前是设计为跨请求的持久化,这次做了优化,变成了基于PHP请求生命期的链接保持。
Yar(Yet Another RPC framework) 是一个轻量级支持并行调用的PHP RPC框架,是我还在微博的时候为了优化微博的性能而开发的一个工具,Yar的并行调用在微博被大量应用以降低用户请求耗时。
最近还是因为疫情,我把Yaf,Yaconf都优化了一轮,今天也完成了Yar的优化(事实上,Yar之前写的就还不错,没啥可优化的,哈哈),也新增了俩个能力。我来简单介绍下:
链接持久化
也就是YAR_OPT_PERSISTENT, 这个配置之前一直有,只不过之前是设计为跨请求的持久化,这次做了优化,变成了基于 PHP 请求生命期的链接保持。
也就是说,当你对一个Yar_Client设置了YAR_OPT_PERSISTEN为true的话,在一次RPC调用结束后,Yar不会销毁这个链接,从而加速后续的针对同样这个Client的RPC调用,我们来看个例子:
<?php function bench($client) { $start = microtime(true); $client->header("connection"); echo microtime(true) - $start, "s\n"; } $client = new Yar_Client("http://remote_host/index.php"); $client->setOpt(YAR_OPT_PERSISTENT, 1); bench($client); bench($client); bench($client);
输出:
0.090613842010498s 0.045492887496948s 0.045512914657593s
可见,第二次调用的时候,耗时降低了一半,这是因为节省了TCP链接建立的耗时。
最后,链接会在PHP请求结束以后,整体释放,也就是PHP请求生命期的存活,不会垮请求,也不用担心内存泄漏。
自定义DNS
这个是来自 HuangeChaodian 网友的PR,基本上是有的时候,我们需要自定义某个Host的DNS解析结果,比如在测试的时候,把一个Hostname指向本地。
诚然,我们可以使用编辑hosts来达到这个效果, 但如果能在代码中切换,还是会方便不少,看例子:
<?php $client = new Yar_Client("http://remote_host/index.php"); $client->setOpt(YAR_OPT_RESOLVE, "remote_host:80:127.0.0.1");
这样,Yar就会把remote_host解析为127.0.0.1了, 可以方便我们做一些本地调试。
性能优化
我现在发现,我写的代码随着时间的变化性能提升还是很明显的, 因为Yar写的比较晚, 相对来说可优化的点不多, 于是就简单点做了一些小修补,就不提了,:)
最后,2.1.0 已经发布 Yar-2.1.0 .
Enjoy!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 关于 Rstudio 1.2 新功能介绍
- Milvus 向量搜索引擎 0.6.0 新功能介绍
- Apache Flink 1.3.0正式发布及其新功能介绍
- 爬虫管理平台 Crawlab 专业版新功能介绍: 性能监控
- 爬虫管理平台 Crawlab 新功能介绍:用 Git 做 CI/CD
- ECMAScript 2015 新功能關係
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
设计模式之禅(第2版)
秦小波 / 机械工业出版社 / 2014-2-25 / 89.00元
本书是设计模式领域公认的3本经典著作之一,“极具趣味,容易理解,但讲解又极为严谨和透彻”是本书的写作风格和方法的最大特点。第1版2010年出版,畅销至今,广受好评,是该领域的里程碑著作。深刻解读6大设计原则和28种设计模式的准确定义、应用方法和最佳实践,全方位比较各种同类模式之间的异同,详细讲解将不同的模式组合使用的方法。第2版在第1版的基础上有两方面的改进,一方面结合读者的意见和建议对原有内容中......一起来看看 《设计模式之禅(第2版)》 这本书的介绍吧!