预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN105677397A(43)申请公布日2016.06.15(21)申请号201511026837.4(22)申请日2015.12.30(71)申请人南京途牛科技有限公司地址210042江苏省南京市玄武区玄武大道699-32号途牛大厦(72)发明人张军(74)专利代理机构南京众联专利代理有限公司32206代理人叶涓涓(51)Int.Cl.G06F9/445(2006.01)G06F9/54(2006.01)权利要求书1页说明书4页附图2页(54)发明名称通过本地网关程序优化PHP远程调用的方法(57)摘要本发明公开了一种通过本地网关程序优化PHP远程调用的方法,通过增加和PHP服务器部署在同一台机器上的本地网关程序,由本地网关程序保持和远程服务之间的长连接,PHP服务和本地网关程序之间通过本机的进程间通信,然后再转发给远程服务,从而利用本地进程间通信有效提高性能,通过长连接避免了调用过程中创建和关闭连接的开销,并通过连接池来创建和管理连接,做到了连接数可控,避免连接过多造成远程服务器压力,达到毫秒以内完成远程调用。CN105677397ACN105677397A权利要求书1/1页1.一种通过本地网关程序优化PHP远程调用的方法,其特征在于:增加与PHP服务器部署在同一台机器上的本地网关程序,由本地网关程序保持和远程服务之间的长连接,PHP服务和本地网关程序之间通过本机的进程间通信,然后再转发给远程服务,包括以下步骤:步骤A,启动网关程序:步骤A-1,监听配置文件中配置的UnixDomainSocket文件路径;步骤A-2,根据配置文件的设置开启对应数量的线程,来处理监听local.sock;步骤A-3,初始化连接池,根据配置文件设置初始化多个和远程服务的长连接;步骤B,PHP组件和网关程序进行通信:步骤B-1,从配置中读取UnixDomainSocket文件路径;步骤B-2,创建并建立Socket连接;步骤B-3,组装需要发送的消息;步骤B-4,通过Socket将字符串发送给网关程序;步骤B-5,关闭Socket连接;步骤C,网关程序处理远程调用请求:步骤C-1,解析请求的数据;步骤C-2,从连接池中获取一个连接,如果没有可用连接,会创建并返回一个连接对象;步骤C-3,通过连接发送消息;步骤C-4,消息发送完后将连接放入连接池,由连接池保持创建好的连接不关闭。2.根据权利要求1所述的通过本地网关程序优化PHP远程调用的方法,其特征在于:所述远程调用请求为Kafka。3.根据权利要求2所述的通过本地网关程序优化PHP远程调用的方法,其特征在于:所述步骤B-3组装规则为:首行是Topic名称,与多条消息由换行符“\n”组合成一个字符串。4.根据权利要求2所述的通过本地网关程序优化PHP远程调用的方法,其特征在于:所述步骤C-1解析规则为:以第一行作为Topic的名称,之后每一行都是需要转发的消息。5.根据权利要求1所述的通过本地网关程序优化PHP远程调用的方法,其特征在于:所述本地网关程序包括NIO组件、数据解析模块、连接池模块、配置管理模块,所述NIO组件使用Netty作为其实现方案,监听本机的UnixDomainSocket文件;所述数据解析模块自定义了数据处理的协议;所述连接池模块用于维持和管理长连接;所述配置管理模块用于集中配置可变参数。6.根据权利要求5所述的通过本地网关程序优化PHP远程调用的方法,其特征在于:所述数据解析模块定义与Kafka通信时使用换行符作为每一条消息的截止符,其中第一行是Kafka的Topic名称。2CN105677397A说明书1/4页通过本地网关程序优化PHP远程调用的方法技术领域[0001]本发明属于PHP技术领域,具体涉及一种通过本地网关程序优化PHP远程调用的方法。背景技术[0002]PHP是一种通用开源脚本语言,语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快,应用十分广泛。[0003]PHP在实现Web服务端功能的时候,同样也会有通过网络调用远程服务的需求。例如,操作数据库增、删、改、查数据库,向消息队列里面发送消息等。在比较通用的场景下,如数据库交互,PHP中提供了官方的C扩展支持,但是在一些特殊场景,比如和Kafka的通信,缺乏相应的扩展支持,就需要自己来进行远程调用。现有的特殊场景下PHP远程调用方法通常有两种:方法一:根据服务提供方的通信协议,使用C语言来