CN104951275A - 计算机指令数据的处理方法和*** - Google Patents
计算机指令数据的处理方法和*** Download PDFInfo
- Publication number
- CN104951275A CN104951275A CN201510341281.1A CN201510341281A CN104951275A CN 104951275 A CN104951275 A CN 104951275A CN 201510341281 A CN201510341281 A CN 201510341281A CN 104951275 A CN104951275 A CN 104951275A
- Authority
- CN
- China
- Prior art keywords
- php
- java
- director data
- intermediate protocol
- protocol
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种计算机指令数据的处理方法和***,包括:在超文本预处理器PHP模块中加入第一协议转换文件的获取地址;当所述PHP模块向JAVA服务器发送请求时,获取所述第一协议转换文件的内容,利用其中的PHP类型的中间协议转换函数解析该请求中的PHP指令数据,转换为中间协议指令数据,再发送给JAVA服务器;在JAVA服务器中加入第二协议转换文件的获取地址;当JAVA服务器接收到PHP模块的请求时,获取所述第二协议转换文件的内容,利用其中的JAVA类型的中间协议转换函数解析该请求中的中间协议指令数据,转化为对应的JAVA指令数据。本发明可以提高PHP和JAVA之间的数据调用的处理效率,降低处理开销。
Description
技术领域
本申请涉及计算机数据处理技术领域,尤其涉及一种计算机指令数据的处理方法和***。
背景技术
计算机语言是人与计算机之间传递信息的媒介数据。计算机***最大特征是指令通过一种语言数据传达给机器。为了使电子计算机进行各种工作。
目前超文本预处理器(PHP,Hypertext Preprocessor)是一种通用开源脚本语言,简单利于学习,广泛用于Web开发领域。
JAVA是一种可以撰写跨平台应用软件的面向对象程序设计语言,具有卓越的通用性、高效性、平台移植性和安全性,应用领域较广。
PHP是一种非常优秀的Web开发语言,而在业务应用程序开发方面,JAVA技术十分流行。因此为充分利用它们的优势,急需一种可跨语言桥接的计算机数据处理方法。
在PHP的发布版本中包含一个JAVA扩展模块,可以用来调用JAVA对象数据,例如:$system=new JAVA("JAVA.lang.System");但使用这种方式,还有很多问题:其一,由于PHP的JAVA扩展模块根据PHP的数据类型选择最合适的JAVA方法,因此无法调用JAVA过载的函数;其二,PHP的JAVA扩展模块将在当前网络服务(Web Server)的进程中载入JAVA虚拟机(JVM),因此开销极大,严重影响Web Server进程的执行效率;其三,在某些操作***和Web Server环境中,PHP的JAVA扩展模块将使Web Server进程僵尸(即没有释放掉资源、但又没有用处的进程)。由于这些原因,PHP的JAVA扩展模块一直无法应用到实际的软件***中。
发明内容
有鉴于此,本发明的主要目的是提供一种计算机指令数据的处理方法和***,以提高PHP和JAVA之间的数据调用的处理效率,降低处理开销。
本发明的技术方案是这样实现的:
一种计算机指令数据的处理方法,包括:
在超文本预处理器PHP模块中加入第一协议转换文件的获取地址,该第一协议转换文件包含PHP类型的中间协议转换函数,该中间协议转换函数用于解析指定的PHP指令数据,并转换为对应的中间协议指令数据,以及用于将中间协议指令数据转换为PHP指令数据;
当所述PHP模块向JAVA服务器发送请求时,获取所述第一协议转换文件的内容,利用其中的PHP类型的中间协议转换函数解析该请求中的PHP指令数据,转换为中间协议指令数据,再发送给JAVA服务器;当所述PHP模块接收到JAVA服务器返回的中间协议指令数据时,利用所述第一协议转换文件的中间协议转换函数将该中间协议指令数据转换为PHP指令数据;
在JAVA服务器中加入第二协议转换文件的获取地址,该第二协议转换文件包括JAVA类型的中间协议转换函数,该中间协议转换函数用于解析指定的中间协议指令数据,并转换为对应的JAVA指令数据,以及用于将JAVA指令数据转换为中间协议指令数据;
当JAVA服务器接收到PHP模块的请求时,获取所述第二协议转换文件的内容,利用其中的JAVA类型的中间协议转换函数解析该请求中的中间协议指令数据,转化为对应的JAVA指令数据;在JAVA服务器向该请求返回响应时,将该响应的JAVA指令数据转换为中间协议指令数据,再返回给PHP模块。
优选的,所述PHP模块发送的请求中的PHP指令数据中,包括调用JAVA类的PHP指令数据,且PHP模块利用所述PHP类型的中间协议转换函数将该调用JAVA类的PHP指令数据转换为调用JAVA类的中间协议指令数据。
优选的,该方法进一步包括:所述JAVA服务器向PHP模块发出调用PHP类或脚本的请求,且JAVA服务器利用所述JAVA类型的中间协议转换函数将该抵用PHP类或脚本的请求转化为用于调用PHP类或脚本的中间协议指令数据。
优选的,该方法进一步包括:所述PHP模块和JAVA服务器之间建立专用的中间协议连接进行中间协议指令数据的交互,该专用的中间协议连接的建立方法包括:
PHP模块与JAVA服务器建立超文本传输协议HTTP连接;
PHP模块向JAVA服务器的PHP专用接口发送HTTP的PUT请求,通知JAVA服务器开启PHP通讯模式;
PHP模块向JAVA服务器的PHP专用接口发送初始化请求,JAVA服务器收到初始化请求后初始化JAVA容器,创建对象句柄,加载所述第二协议转换文件,建立成功专用的中间协议连接。
优选的,该方法进一步包括:PHP模块和JAVA服务器的通讯过程中,PHP模块发送用于检测的中间协议指令数据,JAVA服务器在收到该用于检测的中间协议指令数据后,如果当前的对象句柄存在,则返回对应的响应给PHP模块,PHP模块收到该响应后判定本专用的中间协议连接依然存活。
一种计算机指令数据的处理***,包括PHP模块和JAVA服务器,其中:
所述PHP模块用于加入第一协议转换文件的获取地址,该第一协议转换文件包含PHP类型的中间协议转换函数,该中间协议转换函数用于解析指定的PHP指令数据,并转换为对应的中间协议指令数据,以及用于将中间协议指令数据转换为PHP指令数据;
当所述PHP模块向JAVA服务器发送请求时,获取所述第一协议转换文件的内容,利用其中的PHP类型的中间协议转换函数解析该请求中的PHP指令数据,转换为中间协议指令数据,再发送给JAVA服务器;当所述PHP模块接收到JAVA服务器返回的中间协议指令数据时,利用所述第一协议转换文件的中间协议转换函数将该中间协议指令数据转换为PHP指令数据;
所述JAVA服务器用于加入第二协议转换文件的获取地址,该第二协议转换文件包括JAVA类型的中间协议转换函数,该中间协议转换函数用于解析指定的中间协议指令数据,并转换为对应的JAVA指令数据,以及用于将JAVA指令数据转换为中间协议指令数据;
当JAVA服务器接收到PHP模块的请求时,获取所述第二协议转换文件的内容,利用其中的JAVA类型的中间协议转换函数解析该请求中的中间协议指令数据,转化为对应的JAVA指令数据;在JAVA服务器向该请求返回响应时,将该响应的JAVA指令数据转换为中间协议指令数据,再返回给PHP模块。
优选的,所述PHP模块发送的请求中的PHP指令数据中,包括调用JAVA类的PHP指令数据,且PHP模块利用所述PHP类型的中间协议转换函数将该调用JAVA类的PHP指令数据转换为调用JAVA类的中间协议指令数据。
优选的,所述JAVA服务器进一步用于向PHP模块发出调用PHP类或脚本的请求,且JAVA服务器利用所述JAVA类型的中间协议转换函数将该抵用PHP类或脚本的请求转化为用于调用PHP类或脚本的中间协议指令数据。
本发明所述的计算机指令数据的处理方法实质上实现了一种PHP指令数据与JAVA指令数据的桥接模式,与现有技术相比,本发明可以避免使用额外的组件,例如PHP中的JAVA扩展模块,而是PHP与JAVA利用中间协议直接交互,从而可以提高PHP和JAVA之间的数据调用的处理效率,降低处理开销。
附图说明
图1为本发明所述计算机指令数据处理***的结构示意图;
图2为本发明所述计算机指令数据处理方法所所属交互流程的流程示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图1为本发明所述计算机指令数据处理***的结构示意图。参见图1,本发明所述的计算机指令数据的处理***包括PHP模块和JAVA服务器。
所述PHP模块为执行PHP代码脚本的模块,通常放置在PHP服务器中,所述客户端可以向该PHP模块发起访问请求,如果其中的请求涉及到需要JAVA服务器进行处理,则PHP模块会将请求发送到JAVA服务器,并接收JAVA服务器的返回的处理结果响应。
所述PHP模块具体用于加入第一协议转换文件的获取地址,该第一协议转换文件包含PHP类型的中间协议转换函数,该中间协议转换函数用于解析指定的PHP指令数据,并转换为对应的中间协议指令数据,以及用于将中间协议指令数据转换为PHP指令数据;
当所述PHP模块向JAVA服务器发送请求时,获取所述第一协议转换文件的内容,利用其中的PHP类型的中间协议转换函数解析该请求中的PHP指令数据,转换为中间协议指令数据,再发送给JAVA服务器;当所述PHP模块接收到JAVA服务器返回的中间协议指令数据时,利用所述第一协议转换文件的中间协议转换函数将该中间协议指令数据转换为PHP指令数据;
所述JAVA服务器用于加入第二协议转换文件的获取地址,该第二协议转换文件包括JAVA类型的中间协议转换函数,该中间协议转换函数用于解析指定的中间协议指令数据,并转换为对应的JAVA指令数据,以及用于将JAVA指令数据转换为中间协议指令数据;
当JAVA服务器接收到PHP模块的请求时,获取所述第二协议转换文件的内容,利用其中的JAVA类型的中间协议转换函数解析该请求中的中间协议指令数据,转化为对应的JAVA指令数据;在JAVA服务器向该请求返回响应时,将该响应的JAVA指令数据转换为中间协议指令数据,再返回给PHP模块。
本发明中,所述第一协议转换文件中具体提供了PHP类型的函数以及协议解析器。例如:
<?PHP require_once("http://127.0.0.1:8080/JAVA/JAVAParse.inc");>该段指令数据中包含了所述第一协议转换文件的获取地址http://127.0.0.1:8080/JAVA/JAVAParse.inc,该第一协议转换文件的文件名为JAVAParse.inc。
在PHP模块的指令数据中调用JAVA函数。例如:
<$test=JAVA("JAVA.lang.System")->getProperties();?>
上述指令数据表示,PHP模块想实例化一个名叫“JAVA.lang.System”的JAVA对象,并且调用此对象的getProperties()方法,得到的$test是执行后的返回值。
整个实现过程是:由于前面PHP模块加入了本方法提供的文件JAVAParse.inc,而JAVAParse.inc中包含了一些PHP函数,其中有一个名叫“JAVA”的函数,这个函数就是一个中间协议转换函数,专门用来解析PHP指令数据并转化为本发明所述的中间协议的。在第二段指令数据中,JAVA("JAVA.lang.System"),这句就使用了这个“JAVA”函数,其表示的意思是:使用JAVA函数去初始化一个名叫"JAVA.lang.System"的JAVA类,并且调用这个类的getProperties函数。此时,JAVAParse.inc中的“JAVA”函数就会把这句话转换为中间协议<C v="JAVA.lang.System"p=I></C>(所述中间协议的具体的数据结构在下面有描述)传输给JAVA服务器,JAVA利用第二协议转换文件中的JAVA类型的中间协议转换函数解析所述中间协议指令数据后,就初始化了一个名叫"JAVA.lang.System"的JAVA类且执行它的getProperties函数,并且将返回值通过中间协议返回。
在JAVA服务器侧,JAVA服务器中需要加入第二协议转换文件的获取地址,所述第二协议转换文件例如包括JAVAParse.Jar等文件的地址,当然JAVA服务器也包括所述JAVAParse.inc文件,JAVA服务器的这些文件同样是用来解析协议的。
当JAVA服务器收到一个PHP模块传来的中间协议请求后,会获取JAVAParse.Jar文件的内容,该JAVAParse.Jar文件中包括JAVA类型的中间协议转换函数,该中间协议转换函数用于解析指定的中间协议指令数据,并转换为对应的JAVA指令数据,以及用于将JAVA指令数据转换为中间协议指令数据。JAVA服务器根据该JAVA类型的中间协议转换函数解析所述中间协议请求,得知该中间协议请求想做的具体操作,然后执行它。例如此次收到的中间协议请求内容是<C v="JAVA.lang.System"p=I></C>,表示对方想初始化一个"JAVA.lang.System"类,那么JAVA服务器就在容器中初始化这个对象了。
本发明中,所述PHP模块和JAVA服务器之间的通讯可以是双向的,即PHP模块可以调用JAVA类,或者JAVA服务器可以调用PHP类或脚本。甚至可以将本发明的这种桥接方案集成到解决方案中,以便在请求一个类的时候,允许自动地启动后端***(例如Apache/IIS和PHP、或者JAVA/Tomcat等)。
具体的,所述PHP模块发送的请求中的PHP指令数据中,包括调用JAVA类的PHP指令数据,且PHP模块利用所述PHP类型的中间协议转换函数将该调用JAVA类的PHP指令数据转换为调用JAVA类的中间协议指令数据。
具体的,所述JAVA服务器进一步用于向PHP模块发出调用PHP类或脚本的请求,且JAVA服务器利用所述JAVA类型的中间协议转换函数将该抵用PHP类或脚本的请求转化为用于调用PHP类或脚本的中间协议指令数据。
与上述***对应,本发明还公开了一种计算机指令数据的处理方法,该方法具体包括:
在超文本预处理器PHP模块中加入第一协议转换文件的获取地址,该第一协议转换文件包含PHP类型的中间协议转换函数,该中间协议转换函数用于解析指定的PHP指令数据,并转换为对应的中间协议指令数据,以及用于将中间协议指令数据转换为PHP指令数据;
当所述PHP模块向JAVA服务器发送请求时,获取所述第一协议转换文件的内容,利用其中的PHP类型的中间协议转换函数解析该请求中的PHP指令数据,转换为中间协议指令数据,再发送给JAVA服务器;当所述PHP模块接收到JAVA服务器返回的中间协议指令数据时,利用所述第一协议转换文件的中间协议转换函数将该中间协议指令数据转换为PHP指令数据;
在JAVA服务器中加入第二协议转换文件的获取地址,该第二协议转换文件包括JAVA类型的中间协议转换函数,该中间协议转换函数用于解析指定的中间协议指令数据,并转换为对应的JAVA指令数据,以及用于将JAVA指令数据转换为中间协议指令数据;
当JAVA服务器接收到PHP模块的请求时,获取所述第二协议转换文件的内容,利用其中的JAVA类型的中间协议转换函数解析该请求中的中间协议指令数据,转化为对应的JAVA指令数据;在JAVA服务器向该请求返回响应时,将该响应的JAVA指令数据转换为中间协议指令数据,再返回给PHP模块。
在一种优选实施方式中,所述PHP模块发送的请求中的PHP指令数据中,包括调用JAVA类的PHP指令数据,且PHP模块利用所述PHP类型的中间协议转换函数将该调用JAVA类的PHP指令数据转换为调用JAVA类的中间协议指令数据。
在进一步的优选实施方式中,该方法进一步包括:所述JAVA服务器向PHP模块发出调用PHP类或脚本的请求,且JAVA服务器利用所述JAVA类型的中间协议转换函数将该抵用PHP类或脚本的请求转化为用于调用PHP类或脚本的中间协议指令数据。
本发明的方案具有高效、稳定、安全的特点,占用资源较少,从PHP上调用JAVA函数时不需要额外的组件支持。
在一种优选实施例中,本发明的方法基于JSR 223接口规范工作。
在一种优选实施例中,本发明所述的中间协议是一个超文本传输协议(HTTP,HyperText Transfer Protocol)数据流的实现,基于XML的网络协议,可用于连接本地脚本引擎,依赖于JAVA虚拟机,它允许在PHP应用程序中直接调用JAVA类,它比PHP发布的版本中原生的JAVA扩展模块更快,更稳定。
在本发明所述方法的一种具体实施例中,该方法进一步包括:所述PHP模块和JAVA服务器之间建立专用的中间协议连接进行中间协议指令数据的交互,该专用的中间协议连接的建立方法包括:
步骤101、PHP模块与JAVA服务器建立超文本传输协议HTTP连接;
步骤102、PHP模块向JAVA服务器的PHP专用接口发送HTTP的PUT请求,通知JAVA服务器开启PHP通讯模式;
步骤103、PHP模块向JAVA服务器的PHP专用接口发送初始化请求,JAVA服务器收到初始化请求后初始化JAVA容器,创建对象句柄,加载所述第二协议转换文件,建立成功专用的中间协议连接。
在进一步的优选实施例中,该方法进一步包括:PHP模块和JAVA服务器的通讯过程中,PHP模块发送用于检测的中间协议指令数据,JAVA服务器在收到该用于检测的中间协议指令数据后,如果当前的对象句柄存在,则返回对应的响应给PHP模块,PHP模块收到该响应后判定本专用的中间协议连接依然存活。
图2为本发明所述计算机指令数据处理方法所所属交互流程的流程示意图,参见图2,本发明所述PHP模块和JAVA服务器的交互过程包括:
步骤201、首先PHP模块在启动后,会根据预配置的JAVA服务器的IP地址和端口,与JAVA服务器建立起HTTP连接。PHP模块打开一个HTTP套接字(Socket)去连接JAVA服务器的HTTP服务和端口,例如localhost:8080。所述Socket用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
步骤202、PHP模块发送一个HTTP的PUT请求到所述JAVA服务器指定的URL地址上,例如:PUT/JAVABridge/servletapi.PHPJAVAbridge\r\n\r\n,以通知JAVA服务器准备开始通讯。
步骤203、PHP模块发送字节约定指定的参数字符,告诉JAVA服务器连接正式建立,请求初始化JAVA容器/JAVA类JAVA服务器容器,准备开始接收各类协议请求。例如PHP模块在HTTP中向JAVA服务器发送一个\0177命令,JAVA服务器接受到这个命令后,会去初始化通讯,初始化容器,创建对象句柄,循环等待协议请求,,加载所述第二协议转换文件,至此专用的中间协议连接建立成功。
步骤204、之后PHP模块可以根据客户端的访问请求循环地发送各类具体的操作请求;JAVA服务器会返回对应的响应。例如如果首先需要创建对象,则会发送创建实例的中间协议指令数据:<C v=name p=C|I></C>,当JAVA服务器收到这个中间协议的指令数据后,会解析该指令数据的含义,将其中的name参数取出,创建对象,返回对象<O v=object/>。
以上中间协议请求的调用一直循环,JAVA服务器会一直处于等待状态,等待PHP模块的中间协议请求,执行、返回。重复此过程。JAVA服务器将持续的接收所述中间协议请求,直到收到来自客户端的结束命令,例如:收到PHP模块发送来的EOF字符。
步骤205、当PHP模块调用完成后,PHP模块准备结束这次连接时,发送HTTP请求给JAVA服务器,其中带上约定的参数标示符,例如:<F p="E"/>;JAVA服务器收到此参数标示符,则会得知此次连接可以结束了,JAVA服务器同样发回一个<F p="E"/>参数符来应答表示同意结束通讯。
步骤206、PHP模块最后发送HTTP请求带上结束的字符参数:0000\r\n\r\n;JAVA服务器也以同样字符返回,结束通讯,关闭Socket。
步骤207、PHP模块关闭这个Socket连接。
另外,在整个协议交互过程中,PHP模块可以随时发送指定的字符参数来检测JAVA服务器是否依旧存活。例如PHP模块发送HTTP请求带上0x0参数到JAVA服务器,如果JAVA服务器是存活状态,则也会立即回复0x0字符。PHP模块收到0x0字符后,判定JAVA服务器依然存活着。
另外,所述PHP模块可以发送指定命令去销毁JAVA服务器里的指定JAVA对象句柄,例如:发送调用U命令。同时,JAVA服务器自身也会跟踪所有对象句柄,在收到连接结束命令之后会自动销毁它们,例如:收到EOF命令后JAVA服务器会销毁此次连接所创建的所有JAVA对象。
如果PHP模块向JAVA服务器请求了结束协议,例如:PHP模块发送[F]insh字符。则JAVA服务器会关闭或回收连接并且向PHP模块响应指定的字符参数,例如:F p=A。
本发明中,所述中间协议具备一下几个特征:
1)可扩展性:该中间协议的数据结构是基于可扩展标记语言(XML)进行设计的,该中间协议定义了基本数据传递格式,在更加复杂的使用场景下,可基于XML灵活的扩充本协议,而不影响之前的功能。
2)简单性:PHP模块发送请求,调用对应的对象,然后JAVA服务器通过中间协议返回结果。这些中间协议的数据格式是XML格式的,且依托于HTTP传输。因此,它符合任何路由器、防火墙或代理服务器的要求。
3)简洁:所述中间协议的描述符都非常简洁,每一个操作只用一个字母来定义,保证在此协议在传输中更少的消耗网络资源。
4)通用性:所述中间协议对PHP模块或JAVA服务器类型无要求。对使用的操作***、平台无关。
下面对本发明所述中间协议的具体数据结构做具体说明。
首先,本中间协议定义了大量供客户端和服务端相互操作调用的数据类型,例如:
ReferenceClass、CreateInstance、Invoke、PropertyAccess、
String、Boolean、Long、Double、Object、Null、Void、Apply、
Result、Exception、Composite、Pair、Destroy、EndConnection
下面举例说明所述中间协议的各个请求的具体数据结构:
a)PHP模块可发送指定的协议去请求服务端创建一个JAVA对象。例如PHP请求JAVA服务器创建实例CreateInstance:
<C v=name p=C|I>...参数...
</C>
其中v:string字符串;p:char字符(可取参数为:Reference[C]lass,Create[I]nstance)
b)PHP模块可发送指定指令数据去请求服务端执行一个函数。例如PHP发送Invoke命令去调用JAVA服务器的函数:
<I v=object m=method p=P|I>...参数...
</I>
其中v:unsigned long无符号长整型;m:string字符串
p:char字符(可取参数为:examine[P]roperty,[I]nvoke method)
当v=0,这个调用是指实例化当前桥接的请求句柄。
c)PHP模块可发送指定指令数据去服务端获取一个JAVA对象。例如PHP请求JAVA服务器的ReferenceClass(alternate form)
<H p=1|2|3v=name>...参数...
</H>
其中p:char字符;v:string字符串
Predicate为1表示PHP模块等待服务器返回值
Predicate为2表示不返回结果,结果存储在代理
Predicate为3表示不返回结果,也不创建结果代理
d)PHP模块可发送指定协议去请求服务器创建一个JAVA对象。例如PHP发送CreateInstance协议到JAVA服务器
<K p=1|2|3v=name>...参数...
</K>
其中p:char字符;v:string字符串
Predicate为1表示PHP模块等待服务器返回值
Predicate为2表示不返回结果,结果存储在代理
Predicate为3表示不返回结果,也不创建结果代理
e)PHP模块可发送指定请求去服务端获取一个对象的属性值。例如PHP请求JAVA服务器的PropertyAccess(alternate form)
<G p=1|2|3v=object m=method>...参数...
</G>
其中p:char字符;v:unsigned long无符号长整型;
m:string字符串
Predicate为1表示PHP模块等待服务器返回值
Predicate为2表示不返回结果,结果存储在代理
Predicate为3表示不返回结果,也不创建结果代理
f)PHP模块可以发送指定请求服务端执行某个函数。例如PHP发送中间协议请求Invoke到JAVA服务器:
<Y p=1|2|3v=object m=method>...请求...
</Y>
其中v:unsigned long无符号长整型;m:string字符串
p:char字符(可取参数为:examine[P]roperty,[I]nvoke method)
Predicate为1表示PHP模块等待服务器返回值
Predicate为2表示不返回结果,结果存储在代理
Predicate为3表示不返回结果,也不创建结果代理
当v=0,这个调用是指实例化当前桥接的请求句柄。
g)所述中间协议中有定义字符串类型的请求变量或响应值,例如String:
<S v=str/>
其中v:string字符串
l)所述中间协议中有定义布尔类型的请求变量或响应值,例如Boolean:
<B v=T|F/>
其中v:char字符([T]rue,[F]alse)
h)所述中间协议中有定义长整型型的请求变量或响应值,例如Long:
<L v=l p=[O|A]/>
其中v:unsigned long无符号长整型
p:char(p[O]sitive,neg[A]tive)
i)所述中间协议中有定义双精度浮点型的请求变量或响应值,例如Double:
<D v=d/>
其中v:double
j)所述中间协议中有定义对象类型的请求变量,例如Object:
<O v=object/>
其中v:unsigned long
空值可以发送为V=“”或V=“0”
k)所述中间协议中有定义对象类型的响应值,例如Object:
<O v=object m=TYPE p=TYPE n=[T|F]/>
其中v:unsigned long;m:string
p:char([A]rray/Map,[C]ollection,[O]bject,[E]xception)
n:字符结果可以被缓存为T或F
l)所述中间协议中有定义空值类型的值响应值,例如Null:
<N/>
m)所述中间协议中有定义无返回值的响应值,例如Void:
<V n=[T|F]/>
其中n:字符结果可以被缓存为T或F
n)所述中间协议中有定义执行完毕的响应值,例如Apply:
<A v=object p=cname m=fname n=param#>...PAIRS...
</A>
其中v:unsigned long;p:string;
m:string;n:unsigned long
o)所述中间协议中有定义执行结果的响应值,例如Result:
<R>...参数...</R>
p)所述中间协议中有定义异常类型的请求变量或响应值,例如Exception:
<E v=object m=[T|F]/>
其中v:unsigned long
m:T指unchecked exception,F指checked exception
Unchecked类型的Exception应该终止脚本
q)所述中间协议中有定义成对类型的请求变量或响应值,例如Pair:
<P[t=N|S v=key]>...参数...</P>
其中t:char(key is[N]umeric,[S]tring or doesn't exist(if X=A))
v:unsigned long(if X=H and t=N)
v:string(if X=H and t=S)
r)所述中间协议中有提供销毁数据的方式,可选,例如Destroy:
<U v=object/>
其中v:unsigned long
s)所述中间协议中有提供结束连接的方式,例如EndConnection:
<F p=A|E|a|e/>
其中p:char(Keep[A]live,[E]nd connection).
小写字母表示一个unchecked异常发生在脚本执行上
通过执行上述方法和利用上述中间协议,本发明可以避免使用额外的组件,例如PHP中的JAVA扩展模块,而是PHP与JAVA利用中间协议直接交互,从而可以提高PHP和JAVA之间的数据调用的处理效率,降低处理开销。
另外,本发明的每一个实施例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本发明。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本发明。存储介质可以使用任何类型的记录方式,例如纸张存储介质(如纸带等)、磁存储介质(如软盘、硬盘、闪存等)、光存储介质(如CD-ROM等)、磁光存储介质(如MO等)等。
因此本发明还公开了一种存储介质,其中存储有数据处理程序,该数据处理程序用于执行本发明上述方法的任何一种实施例。
另外,本发明所述的方法步骤除了可以用数据处理程序来实现,还可以由硬件来实现,例如,可以由逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入微控制器等来实现。因此这种可以实现本发明所述方法的硬件也可以构成本发明。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (8)
1.一种计算机指令数据的处理方法,其特征在于,包括:
在超文本预处理器PHP模块中加入第一协议转换文件的获取地址,该第一协议转换文件包含PHP类型的中间协议转换函数,该中间协议转换函数用于解析指定的PHP指令数据,并转换为对应的中间协议指令数据,以及用于将中间协议指令数据转换为PHP指令数据;
当所述PHP模块向JAVA服务器发送请求时,获取所述第一协议转换文件的内容,利用其中的PHP类型的中间协议转换函数解析该请求中的PHP指令数据,转换为中间协议指令数据,再发送给JAVA服务器;当所述PHP模块接收到JAVA服务器返回的中间协议指令数据时,利用所述第一协议转换文件的中间协议转换函数将该中间协议指令数据转换为PHP指令数据;
在JAVA服务器中加入第二协议转换文件的获取地址,该第二协议转换文件包括JAVA类型的中间协议转换函数,该中间协议转换函数用于解析指定的中间协议指令数据,并转换为对应的JAVA指令数据,以及用于将JAVA指令数据转换为中间协议指令数据;
当JAVA服务器接收到PHP模块的请求时,获取所述第二协议转换文件的内容,利用其中的JAVA类型的中间协议转换函数解析该请求中的中间协议指令数据,转化为对应的JAVA指令数据;在JAVA服务器向该请求返回响应时,将该响应的JAVA指令数据转换为中间协议指令数据,再返回给PHP模块。
2.根据权利要求1所述的方法,其特征在于,所述PHP模块发送的请求中的PHP指令数据中,包括调用JAVA类的PHP指令数据,且PHP模块利用所述PHP类型的中间协议转换函数将该调用JAVA类的PHP指令数据转换为调用JAVA类的中间协议指令数据。
3.根据权利要求1所述的方法,其特征在于,该方法进一步包括:所述JAVA服务器向PHP模块发出调用PHP类或脚本的请求,且JAVA服务器利用所述JAVA类型的中间协议转换函数将该抵用PHP类或脚本的请求转化为用于调用PHP类或脚本的中间协议指令数据。
4.根据权利要求1所述的方法,其特征在于,该方法进一步包括:所述PHP模块和JAVA服务器之间建立专用的中间协议连接进行中间协议指令数据的交互,该专用的中间协议连接的建立方法包括:
PHP模块与JAVA服务器建立超文本传输协议HTTP连接;
PHP模块向JAVA服务器的PHP专用接口发送HTTP的PUT请求,通知JAVA服务器开启PHP通讯模式;
PHP模块向JAVA服务器的PHP专用接口发送初始化请求,JAVA服务器收到初始化请求后初始化JAVA容器,创建对象句柄,加载所述第二协议转换文件,建立成功专用的中间协议连接。
5.根据权利要求4所述的方法,其特征在于,该方法进一步包括:PHP模块和JAVA服务器的通讯过程中,PHP模块发送用于检测的中间协议指令数据,JAVA服务器在收到该用于检测的中间协议指令数据后,如果当前的对象句柄存在,则返回对应的响应给PHP模块,PHP模块收到该响应后判定本专用的中间协议连接依然存活。
6.一种计算机指令数据的处理***,其特征在于,包括PHP模块和JAVA服务器,其中:
所述PHP模块用于加入第一协议转换文件的获取地址,该第一协议转换文件包含PHP类型的中间协议转换函数,该中间协议转换函数用于解析指定的PHP指令数据,并转换为对应的中间协议指令数据,以及用于将中间协议指令数据转换为PHP指令数据;
当所述PHP模块向JAVA服务器发送请求时,获取所述第一协议转换文件的内容,利用其中的PHP类型的中间协议转换函数解析该请求中的PHP指令数据,转换为中间协议指令数据,再发送给JAVA服务器;当所述PHP模块接收到JAVA服务器返回的中间协议指令数据时,利用所述第一协议转换文件的中间协议转换函数将该中间协议指令数据转换为PHP指令数据;
所述JAVA服务器用于加入第二协议转换文件的获取地址,该第二协议转换文件包括JAVA类型的中间协议转换函数,该中间协议转换函数用于解析指定的中间协议指令数据,并转换为对应的JAVA指令数据,以及用于将JAVA指令数据转换为中间协议指令数据;
当JAVA服务器接收到PHP模块的请求时,获取所述第二协议转换文件的内容,利用其中的JAVA类型的中间协议转换函数解析该请求中的中间协议指令数据,转化为对应的JAVA指令数据;在JAVA服务器向该请求返回响应时,将该响应的JAVA指令数据转换为中间协议指令数据,再返回给PHP模块。
7.根据权利要求6所述的***,其特征在于,所述PHP模块发送的请求中的PHP指令数据中,包括调用JAVA类的PHP指令数据,且PHP模块利用所述PHP类型的中间协议转换函数将该调用JAVA类的PHP指令数据转换为调用JAVA类的中间协议指令数据。
8.根据权利要求6所述的***,其特征在于,所述JAVA服务器进一步用于向PHP模块发出调用PHP类或脚本的请求,且JAVA服务器利用所述JAVA类型的中间协议转换函数将该抵用PHP类或脚本的请求转化为用于调用PHP类或脚本的中间协议指令数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510341281.1A CN104951275B (zh) | 2015-06-18 | 2015-06-18 | 计算机指令数据的处理方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510341281.1A CN104951275B (zh) | 2015-06-18 | 2015-06-18 | 计算机指令数据的处理方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104951275A true CN104951275A (zh) | 2015-09-30 |
CN104951275B CN104951275B (zh) | 2017-06-30 |
Family
ID=54165952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510341281.1A Active CN104951275B (zh) | 2015-06-18 | 2015-06-18 | 计算机指令数据的处理方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104951275B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105915500A (zh) * | 2015-12-22 | 2016-08-31 | 美的集团股份有限公司 | 物联网不同协议转换的方法、协议转换服务端和物联网终端 |
CN107229723A (zh) * | 2017-06-05 | 2017-10-03 | 腾讯科技(深圳)有限公司 | 指令处理方法及指令处理装置 |
CN108762762A (zh) * | 2018-05-08 | 2018-11-06 | 深圳市分期乐网络科技有限公司 | 会话信息管理方法、装置、设备和计算机存储介质 |
CN109660573A (zh) * | 2017-10-10 | 2019-04-19 | 北京京东尚科信息技术有限公司 | 数据传输方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101026438A (zh) * | 2007-02-06 | 2007-08-29 | 华为技术有限公司 | 处理消息的方法和***以及消息发送端和消息接收端 |
US20090271771A1 (en) * | 2008-04-28 | 2009-10-29 | Fallows John R | System and methods for distributed execution of computer executable programs utilizing asymmetric translation |
CN102098296A (zh) * | 2010-12-29 | 2011-06-15 | 北京新媒传信科技有限公司 | 一种实现远程调用的方法和*** |
WO2012048562A1 (zh) * | 2010-10-13 | 2012-04-19 | 中兴通讯股份有限公司 | 一种ims软终端实现方法及装置 |
CN102479130A (zh) * | 2010-11-25 | 2012-05-30 | 上海宇芯科技有限公司 | 一种跨平台跨语言单芯片***的验证方法 |
-
2015
- 2015-06-18 CN CN201510341281.1A patent/CN104951275B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101026438A (zh) * | 2007-02-06 | 2007-08-29 | 华为技术有限公司 | 处理消息的方法和***以及消息发送端和消息接收端 |
US20090271771A1 (en) * | 2008-04-28 | 2009-10-29 | Fallows John R | System and methods for distributed execution of computer executable programs utilizing asymmetric translation |
WO2012048562A1 (zh) * | 2010-10-13 | 2012-04-19 | 中兴通讯股份有限公司 | 一种ims软终端实现方法及装置 |
CN102479130A (zh) * | 2010-11-25 | 2012-05-30 | 上海宇芯科技有限公司 | 一种跨平台跨语言单芯片***的验证方法 |
CN102098296A (zh) * | 2010-12-29 | 2011-06-15 | 北京新媒传信科技有限公司 | 一种实现远程调用的方法和*** |
Non-Patent Citations (2)
Title |
---|
吴洲等: "基于Thrift的跨编程语言Flex应用框架研究", 《计算机与现代化》 * |
龚成莹等: "基于JSON的Android移动终端与PHP及MySQL数据通信", 《工业仪表和自动化装置》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105915500A (zh) * | 2015-12-22 | 2016-08-31 | 美的集团股份有限公司 | 物联网不同协议转换的方法、协议转换服务端和物联网终端 |
CN107229723A (zh) * | 2017-06-05 | 2017-10-03 | 腾讯科技(深圳)有限公司 | 指令处理方法及指令处理装置 |
CN107229723B (zh) * | 2017-06-05 | 2022-05-03 | 腾讯科技(深圳)有限公司 | 指令处理方法及指令处理装置 |
CN109660573A (zh) * | 2017-10-10 | 2019-04-19 | 北京京东尚科信息技术有限公司 | 数据传输方法和装置 |
CN109660573B (zh) * | 2017-10-10 | 2021-10-15 | 北京京东尚科信息技术有限公司 | 数据传输方法和装置 |
CN108762762A (zh) * | 2018-05-08 | 2018-11-06 | 深圳市分期乐网络科技有限公司 | 会话信息管理方法、装置、设备和计算机存储介质 |
CN108762762B (zh) * | 2018-05-08 | 2022-03-25 | 深圳市分期乐网络科技有限公司 | 会话信息管理方法、装置、设备和计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104951275B (zh) | 2017-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111290753B (zh) | 前端开发环境的搭建方法、装置、设备及存储介质 | |
JP3954809B2 (ja) | サーバ側制御オブジェクトの状態管理方法 | |
US7657591B2 (en) | Dispatching client requests to appropriate server-side methods | |
US8386608B1 (en) | Service scripting framework | |
CN104951275A (zh) | 计算机指令数据的处理方法和*** | |
CN104168250B (zh) | 基于cgi框架的业务流程控制方法及装置 | |
CN112882844B (zh) | 基于网络前后端的联调方法、装置及存储介质 | |
JP2021039718A (ja) | 自動化されたアプリケーション・プログラミング・インターフェース(api)仕様作成 | |
US20070106998A1 (en) | Mobility system and method for messaging and inter-process communication | |
CN102855418A (zh) | 发现Web内网代理漏洞的方法 | |
CN104243475A (zh) | 基于web反向代理的动态混淆的方法及*** | |
Dosis et al. | Semantic representation and integration of digital evidence | |
CN101136834A (zh) | 一种基于ssl vpn的链接改写方法和设备 | |
CN114489622A (zh) | 静态资源管理方法、Node.js应用、电子设备和存储介质 | |
CN101702170A (zh) | 行政审批串口数据解析交换方法 | |
CN116166907B (zh) | 一种使用WebAssembly和服务页面编译技术开发Web应用的方法及装置 | |
Far et al. | Ex-w-pert system: A web-based distributed expert system for groupware design | |
Wenzel | PIDE as front-end technology for Coq | |
CN116346660A (zh) | 基于依赖替换服务的数据处理方法、装置、设备及介质 | |
Jackson | Building Microservices with Go | |
Hine et al. | Scalable emulation of enterprise systems | |
CN106293862A (zh) | 一种可扩展标记语言xml数据的解析方法和装置 | |
AU2018390863A1 (en) | Computer system and method for extracting dynamic content from websites | |
Bhanu et al. | Implementing Dynamically Evolvable Communication with Embedded Systems through WEB Services. | |
TWI414995B (zh) | 開發及執行平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |