[发明专利]通过本地网关程序优化PHP远程调用的方法有效
申请号: | 201511026837.4 | 申请日: | 2015-12-30 |
公开(公告)号: | CN105677397B | 公开(公告)日: | 2018-09-25 |
发明(设计)人: | 张军 | 申请(专利权)人: | 南京途牛科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 南京众联专利代理有限公司 32206 | 代理人: | 叶涓涓 |
地址: | 210042 江苏省南京*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 通过 本地 网关 程序 优化 php 远程 调用 方法 | ||
本发明公开了一种通过本地网关程序优化PHP远程调用的方法,通过增加和PHP服务器部署在同一台机器上的本地网关程序,由本地网关程序保持和远程服务之间的长连接,PHP服务和本地网关程序之间通过本机的进程间通信,然后再转发给远程服务,从而利用本地进程间通信有效提高性能,通过长连接避免了调用过程中创建和关闭连接的开销,并通过连接池来创建和管理连接,做到了连接数可控,避免连接过多造成远程服务器压力,达到毫秒以内完成远程调用。
技术领域
本发明属于PHP技术领域,具体涉及一种通过本地网关程序优化PHP远程调用的方法。
背景技术
PHP是一种通用开源脚本语言,语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快,应用十分广泛。
PHP在实现Web服务端功能的时候,同样也会有通过网络调用远程服务的需求。例如,操作数据库增、删、改、查数据库,向消息队列里面发送消息等。在比较通用的场景下,如数据库交互,PHP中提供了官方的C扩展支持,但是在一些特殊场景,比如和Kafka的通信,缺乏相应的扩展支持,就需要自己来进行远程调用。现有的特殊场景下PHP远程调用方法通常有两种:
方法一:根据服务提供方的通信协议,使用C语言来开发PHP的扩展。但C语言来开发PHP扩展难度较大;而且C语言虽然执行效率高,但是并没有实现长连接,当远程服务调用频率很高时,频繁的创建和关闭连接增加了调用时长。每一次调用都要打开一个新连接,当并发过高时,对服务方可提供的最大连接数造成了很大压力。
方法二:根据服务提供方的通信协议,直接使用PHP的socket来实现。由于PHP本身的执行效率较差,无法满足高性能场景下的调用需求;此外这种方法也不支持长连接,频繁的创建和关闭连接增加了调用时长,与方法一相同,每一次调用都要打开一个新连接,当并发过高时,对服务方可提供的最大连接数造成了很大压力。
显然,现有的两种解决方法均存在缺陷,它们和Kafka的交互基本都在10ms以上,还有可能更长,除了现有的性能不能满足我们要求外,当并发过高时,通常会出现ActiveMQ连接数不足的现象,导致后续请求不能及时处理,从而影响了接口的执行时间。
发明内容
为解决上述问题,本发明公开了一种通过本地网关程序优化PHP远程调用的方法,能够提升请求性能,同时可以减少远程连接的数量,避免远程服务能力不足带来的影响。
为了达到上述目的,本发明提供如下技术方案:
一种通过本地网关程序优化PHP远程调用的方法,增加与PHP服务器部署在同一台机器上的本地网关程序,由本地网关程序保持和远程服务之间的长连接,PHP服务和本地网关程序之间通过本机的进程间通信,然后再转发给远程服务,具体包括以下步骤:
步骤A,启动网关程序:
步骤A-1,监听配置文件中配置的Unix Domain Socket文件路径;
步骤A-2,根据配置文件的设置开启对应数量的线程,来处理监听local.sock;
步骤A-3,初始化连接池,根据配置文件设置初始化多个和远程服务的长连接;
步骤B, PHP组件和网关程序进行通信:
步骤B-1,从配置中读取Unix Domain Socket文件路径;
步骤B-2,创建并建立Socket连接;
步骤B-3,组装需要发送的消息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京途牛科技有限公司,未经南京途牛科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201511026837.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种资源下载方法和装置
- 下一篇:用计算机程序验证数学证明合法性的方法