Php代码编译方法、php代码运行方法及装置制造方法

文档序号:6511013阅读:160来源:国知局
Php代码编译方法、php代码运行方法及装置制造方法
【专利摘要】本发明公开了一种PHP代码编译方法、PHP代码运行方法及装置,包括:获取待编译PHP代码后,对该待编译PHP代码进行编译,得到与该待编译PHP代码对应的Opcode?Array,该Opcode?Array中包括用于在该Opcode?Array被Web应用执行时获取上述待编译PHP代码对应该Web应用的代码目录的目录获取代码;并缓存该Opcode?Array,用于Web服务器上各Web应用运行上述待编译PHP代码。采用本发明实施例提供的方案,节省了Web服务器的处理资源和存储资源,提高了Web服务器性能。
【专利说明】PHP代码编译方法、PHP代码运行方法及装置
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种PHP代码编译方法、PHP代码运行方法及装置。
【背景技术】
[0002]超文本预处理语言PHP (Hypertext Preprocessor)是一种动态网站脚本编程语言,可以运行在互联网Web服务端,通常跟开源的Web服务器一起搭建动态Web站点。
[0003]现有技术中运行PHP代码的流程可以如下:
[0004]第一步,编译PHP代码为一系列操作码Opcode组成的集合,可以称为操作码阵列Opcode Array ;
[0005]第二步,加载并执行该Opcode Array。
[0006]相同的PHP代码,编译之后的Opcode Array也是相同的,所以为了提高PHP代码的运行效率,在编译完成后可以缓存PHP代码对应的Opcode Array,以便后续需要再次运行该PHP代码时,直接获取缓存的与该PHP代码对应的Opcode Array执行,从而省去了编译代码的步骤,提高了 PHP代码的运行效率。
[0007]云计算中的平台即服务(PaaS, Platform-as-a-server)模式,是将软件研发平台作为一种服务提供给用户,用户仅需将应用托管至PaaS平台上,应用的运维、数据监控和数据统计等工作均由PaaS平台来完成。
[0008]在提供PaaS平台的Web服务器中,需要运行多个Web应用,该Web应用也可以是Web网站。在同一台Web服务器上,同一 PHP代码,对应不同Web应用的代码目录是不同的,而PHP代码在编译之后会产生与代码目录相关的常量值,该常量值是包含在生成的OpcodeArray中。因此,即使不同的Web应用中存在相同的PHP代码,由于对应不同Web应用该PHP代码的代码目录不同,则编译所生成的Opcode Array也因所包含的该常量值不同而有所不同。
[0009]在实际应用中,大量的Web应用可能使用相同的PHP开源软件,所以同一台Web服务器上不同的Web应用将使用一些相同PHP代码,然而由于对应不同Web应用该相同PHP代码的代码目录是不同的,所以缓存的Opcode Array不同,使得针对每个Web应用都需要编译一次该PHP代码,且都将缓存一份该PHP代码对应的Opcode Array,从而导致Web服务器处理资源和存储资源的浪费,降低Web服务器性能,并且相同的PHP代码的重复编译也降低了代码的运行效率。

【发明内容】

[0010]本发明实施例提供一种PHP代码编译方法及装置,用以解决现有技术中存在的具有多个Web应用的Web服务器在缓存PHP代码对应的Opcode Array时处理资源和存储资源浪费的问题。
[0011]本发明实施例还提供一种PHP代码运行方法及装置,用以解决现有技术中存在的具有多个Web应用的Web服务器在运行PHP代码时效率较低的问题。
[0012]本发明实施例提供一种PHP代码编译方法,包括:
[0013]获取待编译PHP代码;
[0014]对所述待编译PHP代码进行编译,得到与所述待编译PHP代码对应的OpcodeArray,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时,获取所述待编译PHP代码对应该Web应用的代码目录的目录获取代码;
[0015]缓存所述Opcode Array,用于Web服务器上各Web应用运行所述待编译PHP代码。
[0016]本发明实施例提供的方法中,由于经过编译得到的与待编译PHP代码对应的Opcode Array中,包括的是用于在该Opcode Array被Web应用执行时获取该待编译PHP代码对应该Web应用的代码目录的目录获取代码,而并非是该待编译PHP代码对应某一个Web应用的代码目录,因此针对不同Web应用,相同PHP代码经过编译生成的Opcode Array相同,所以该相同PHP代码只需编译一次,并将Opcode Array缓存,各Web应用即可以共享缓存的与该相同PHP代码对应的Opcode Array,节省了 Web服务器的处理资源和存储资源,提高了 Web服务器性能。
[0017]进一步的,缓存所述Opcode Array,具体包括:
[0018]将包含所述待编译PHP代码的代码文件所在的节点信息作为键key,所述OpcodeArray作为值value,其中,所述待编译PHP代码在同一 Web服务器上仅保存在一个代码文件中;对应缓存所述节点信息和所述Opcode Array。
[0019]这样,可以使得当后续需要运行该待编译PHP代码时,可以通过包含该待编译PHP代码的代码文件所在的节点信息对应的key,确定与该key对应的value,并确定是否缓存有与其对应的Opcode Array。
[0020]进一步的,缓存所述Opcode Array,具体包括:
[0021 ] 将所述待编译PHP代码的唯一代码标识作为key ,所述Opcode Array作为值value ;对应缓存所述唯一代码标识和所述Opcode Array ?
[0022]这样,可以使得当后续需要运行该待编译PHP代码时,可以通过该待编译PHP代码的唯一代码标识对应的key,确定与该key对应的value,并确定是否缓存有与其对应的Opcode Array。
[0023]本发明实施例还提供一种PHP运行方法,包括:
[0024]Web服务器上的各Web应用在需要运行PHP代码时,确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array ;
[0025]当缓存中未存在与所述待运行PHP代码对应的Opcode Array时,对所述待运行PHP代码进行编译,得到与所述待运行PHP代码对应的Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时,获取所述待运行PHP代码对应该Web应用的代码目录的目录获取代码;以及,缓存并执行编译得到的所述Opcode Array ;
[0026]当缓存中已经存在与所述待运行PHP代码对应的Opcode Array时,执行与所述待运行PHP代码对应的Opcode Array。
[0027]采用本发明实施例提供的上述方法,当Web服务器上的各Web应用在需要运行PHP代码时,首先确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array,且该Opcode Array可以由各Web应用共享,如果已经存在该Opcode Array,直接获取并执行该Opcode Array,省去了编译PHP代码的步骤,提高了具有多个Web应用的Web服务器在运行PHP代码时的运行效率。
[0028]进一步的,执行与所述待运行PHP代码对应的Opcode Array,具体包括:
[0029]在执行与所述待运行PHP代码对应的Opcode Array的过程中,通过执行所述Opcode Array中的所述目录获取代码,获取所述待运行PHP代码对应该Web应用的代码目录。
[0030]这样,即可以通过该目录获取代码,获取该待运行PHP代码对应的Web应用的代码目录,使得在执行该对应Opcode Array之后,得到与现有技术中该待运行PHP代码运行后相同的结果。
[0031]本发明实施例还提供一种PHP代码编译装置,包括:
[0032]代码获取单元,用于获取待编译PHP代码;
[0033]编译单元,用于对所述待编译PHP代码进行编译,得到与所述待编译PHP代码对应的Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时,获取所述待编译PHP代码对应该Web应用的代码目录的目录获取代码;
[0034]缓存单元,用于缓存所述Opcode Array,用于Web服务器上各Web应用运行所述待编译PHP代码。
[0035]采用本发明实施例提供的上述装置,由于经过编译得到的与待编译PHP代码对应的Opcode Array中,包括的是用于在该Opcode Array被Web应用执行时获取该待编译PHP代码对应该Web应用的代码目录的目录获取代码,而并非是该待编译PHP代码对应某一个Web应用的代码目录,因此针对不同Web应用,相同PHP代码经过编译生成的Opcode Array相同,所以该相同PHP代码只需编译一次,并将Opcode Array缓存,各Web应用即可以共享缓存的与该相同PHP代码对应的Opcode Array,节省了 Web服务器的处理资源和存储资源,提高了 Web服务器性能。
[0036]进一步的,所述缓存单元,具体用于将包含所述待编译PHP代码的代码文件所在的节点信息作为键key,所述Opcode Array作为值value,其中,所述待编译PHP代码在同一Web服务器上仅保存在一个代码文件中;并对应缓存所述节点信息和所述Opcode Array0
[0037]这样,可以使得当后续需要运行该待编译PHP代码时,可以通过包含所述待编译PHP代码的代码文件所在的节点信息对应的key,确定与该key对应的value,并确定是否缓存有与其对应的Opcode Array。
[0038]进一步的,所述缓存单元,具体用于将所述待编译PHP代码的唯一代码标识作为key,所述Opcode Array作为值value ;并对应缓存所述唯一代码标识和所述OpcodeArray。
[0039]这样,可以使得当后续需要运行该待编译PHP代码时,可以通过该待编译PHP代码的唯一代码标识对应的key,确定与该key对应的value,并确定是否缓存有与其对应的Opcode Array。
[0040]本发明实施例还提供一种PHP代码运行装置,应用于Web服务器上的各Web应用,包括:
[0041]缓存判定单元,用于确定缓存中是否已经存在与待运行PHP代码对应的OpcodeArray ;[0042]编译单元,用于当所述缓存判定单元确定缓存中未存在与所述待运行PHP代码对应的Opcode Array时,对所述待运行PHP代码进行编译,得到与所述待运行PHP代码对应的Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时获取所述待运行PHP代码对应该Web应用的代码目录的目录获取代码;
[0043]缓存单元,用于缓存编译得到的所述Opcode Array ;
[0044]执行单元,用于当所述缓存判定单元确定缓存中已经存在与所述待运行PHP代码对应的Opcode Array时,执行与所述待运行PHP代码对应的Opcode Array ;以及当所述缓存判定单元确定缓存中未存在与所述待运行PHP代码对应的Opcode Array时,执行编译得到的所述Opcode Array。
[0045]采用本发明实施例提供的上述装置,当Web服务器上的各Web应用在需要运行PHP代码时,首先确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array,且该Opcode Array可以由各Web应用共享,如果已经存在该Opcode Array,直接获取并执行该Opcode Array,省去了编译PHP代码的步骤,提高了具有多个Web应用的Web服务器在运行PHP代码时的运行效率。
[0046]进一步的,所述执行单元,具体用于在执行与所述待运行PHP代码对应的OpcodeArray的过程中,通过执行所述Opcode Array中的所述目录获取代码,获取所述待运行PHP代码对应该Web应用的代码目录。
[0047]这样,即可以通过该目录获取代码,获取该待运行PHP代码对应的Web应用的代码目录之后,使得在执行该对应Opcode Array之后,得到与现有技术中该待运行PHP代码运行后相同的结果。
[0048]本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
【专利附图】

【附图说明】
[0049]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0050]图1为本发明实施例提供的PHP代码编译方法的流程图;
[0051]图2为本发明实施例提供的PHP代码运行方法的流程图;
[0052]图3为本发明实施例提供的PHP代码编译装置的结构示意图;
[0053]图4为本发明实施例提供的PHP代码运行装置的结构示意图。
【具体实施方式】
[0054]为了给出具有多个Web应用的Web服务器在缓存PHP代码对应的Opcode Array时节省处理资源和存储资源的实现方案,本发明实施例提供了一种PHP代码编译方法及装置;为了给出具有多个Web应用的Web服务器在运行PHP代码时提高运行效率的实现方案,本发明实施例还提供了一种PHP代码运行方法及装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组人
口 O
[0055]本发明实施例提供一种PHP代码编译方法,如图1所示,包括:
[0056]步骤101、获取待编译PHP代码。
[0057]步骤102、对该待编译PHP代码进行编译,得到与该待编译PHP代码对应的OpcodeArray,该Opcode Array中包括用于在该Opcode Array被Web应用执行时,获取该待编译PHP代码对应该Web应用的代码目录的目录获取代码。
[0058]步骤103、缓存该Opcode Array,用于Web服务器上各Web应用运行该待编译PHP代码。
[0059]进一步的,在上述步骤103中,缓存编译得到的该Opcode Array,当该待编译PHP代码在同一 Web服务器上仅保存在一个代码文件中时,可以将包含该待编译PHP代码的代码文件所在的节点信息作为键key,与该待编译PHP代码对应的Opcode Array作为值value,对应缓存该节点信息和该Opcode Array。从而当后续需要运行该待编译PHP代码时,可以通过包含该待编译PHP代码的代码文件所在的节点信息对应的key,确定与该key对应的value,并确定是否缓存有与其对应的Opcode Array。
[0060]上述步骤103中缓存编译得到的该Opcode Array,也可以将该待编译PHP代码的唯一代码标识作为key,与该待编译PHP代码对应的Opcode Array作为值value,对应缓存该唯一代码标识和该Opcode Array0从而使得当后续需要运行该待编译PHP代码时,可以通过与该待编译PHP代码的唯一代码标识对应的key,确定与该key对应的value,并确定是否缓存有与其对应的Opcode Array。
[0061]在实现本发明实施例提供的上述步骤102时,可以在现有PHP语言编译工具的基础上进行改进,修改PHP语言编译工具中Zend引擎的与代码目录相关的关键字的PHP语法解析部分,使其在编译过程中不再产生与代码目录相关的常量值,而生成对应Web应用的代码目录的目录获取代码,使得在后续运行期间像执行函数一样执行这段代码来获取代码目录。
[0062]本发明实施例提供的上述PHP代码编译方法中,由于经过编译得到的与待编译PHP代码对应的Opcode Array中,包括的是用于在该Opcode Array被Web应用执行时获取该待编译PHP代码对应该Web应用的代码目录的目录获取代码,而并非是该待编译PHP代码对应某一个Web应用的代码目录,因此针对不同Web应用,相同PHP代码经过编译生成的Opcode Array相同,所以该相同PHP代码只需编译一次,并将Opcode Array缓存,各Web应用即可以共享缓存的与该相同PHP代码对应的Opcode Array,节省了 Web服务器的处理资源和存储资源,提高了 Web服务器性能。
[0063]相应的,基于上述PHP代码编译方法,本发明实施例还提供一种PHP代码运行方法,应用于Web服务器上的各Web应用,如图2所示,包括:
[0064]步骤201、在需要运行PHP代码时,确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array,如果是,执行步骤202,如果否,执行步骤步骤203。
[0065]步骤202、当缓存中已经存在与该待运行PHP代码对应的Opcode Array时,执行与该待运行PHP代码对应的Opcode Array,流程结束。
[0066]步骤203、当缓存中未存在与该待运行PHP代码对应的Opcode Array时,对该待运行PHP代码进行编译,得到与该待运行PHP代码对应的Opcode Array,该Opcode Array中包括用于在该Opcode Array被Web应用执行时获取该待运行PHP代码对应该Web应用的代码目录的目录获取代码。
[0067]步骤204、缓存并执行编译得到的该Opcode Array?
[0068]本发明实施例中,对于Web服务器上的各Web应用中相同的PHP代码文件,可以在该Web服务器上只存储一份,在各Web应用代码目录下保存一个链接,指向所存储的PHP代码文件,使得在运行PHP代码的过程中,当需要对PHP代码进行编译时,可以通过该链接获取该PHP代码。
[0069]本发明实施例提供的上述PHP代码运行方法中,上述步骤202中已经缓存的与该待运行PHP代码对应的Opcode Array,可以是当前将要运行该待运行PHP代码的Web应用之前编译得到的,也可以其它Web应用之前在运行该待运行PHP代码时编译得到的。
[0070]在上述步骤202和步骤204中,在执行与该待运行PHP代码对应的Opcode Array的过程中,由于该Opcode Array中包括了用于在该Opcode Array被Web应用执行时,获取该待运行PHP代码对应该Web应用的代码目录的目录获取代码,所以可以通过执行该Opcode Array中的该目录获取代码,获取到该待运行PHP代码对应该Web应用的代码目录,使得在执行该对应Opcode Array之后,得到与现有技术中该待运行PHP代码运行后相同的结果。
[0071]上述步骤203中对该待运行PHP代码进行编译,以及上述步骤204中存储编译得到的与该待运行PHP代码对应的Opcode Array,可以采用与上述PHP代码编译方法相同的方法进行编译,在此不再进行详细描述。
[0072]相应的,当该待编译PHP代码在同一 Web服务器上仅保存在一个代码文件中时,且存储与该待运行PHP代码对应的Opcode Array,将包含该待编译PHP代码的代码文件所在的节点信息作为键key,与该待编译PHP代码对应的Opcode Array作为值value,对应缓存该节点信息和该Opcode Array,则在上述步骤201中,确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array时,可以根据包含该待运行PHP代码的代码文件所在的节点信息,确定缓存中是否已经存在对应该节点信息的Opcode Array,如果已经存在,表示缓存中已经存在与待运行PHP代码对应的Opcode Array,如果不存在,表示缓存中未存在与待运行PHP代码对应的Opcode Array。
[0073]相应的,当存储与该待运行PHP代码对应的Opcode Array,是将该运行PHP代码的唯一代码标识作为key,与该待编译PHP代码对应的Opcode Array作为值value,对应缓存该唯一代码标识和该Opcode Array时,则在上述步骤201中,确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array时,可以根据待运行PHP代码的唯一代码标识,确定缓存里是否已经存在对应该唯一代码标识的Opcode Array,如果已经存在,表示缓存中已经存在与待运行PHP代码对应的Opcode Array,如果不存在,表示缓存中未存在与待运行PHP代码对应的Opcode Array。
[0074]采用本发明实施例提供的上述PHP代码运行方法,当Web服务器上的各Web应用在需要运行PHP代码时,首先确定缓存中是否已经存在与待运行PHP代码对应的OpcodeArray,且该Opcode Array可以由各Web应用共享,如果已经存在该Opcode Array,直接获取并执行该Opcode Array,省去了编译PHP代码的步骤,提高了具有多个Web应用的Web服务器在运行PHP代码时的运行效率。[0075]基于同一发明构思,根据本发明上述实施例提供的PHP代码编译方法,相应地,本发明另一实施例还提供了 PHP代码编译装置,装置结构示意图如图3所示,具体包括:
[0076]代码获取单元301,用于获取待编译PHP代码;
[0077]编译单元302,用于对该待编译PHP代码进行编译,得到与该待编译PHP代码对应的Opcode Array,该Opcode Array中包括用于在该Opcode Array被Web应用执行时,获取该待编译PHP代码对应该Web应用的代码目录的目录获取代码;
[0078]缓存单元303,用于缓存该Opcode Array,用于Web服务器上各Web应用运行该待编译PHP代码。
[0079]进一步的,缓存单元303,具体用于将包含该待编译PHP代码的代码文件所在的节点信息作为键key,该Opcode Array作为值value,其中,该待编译PHP代码在同一 Web服务器上仅保存在一个代码文件中;并对应缓存所述节点信息和该Opcode Array。
[0080]进一步的,缓存单元303,具体用于将该待编译PHP代码的唯一代码标识作为key,该Opcode Array作为值value ;并对应缓存该唯一代码标识和该Opcode Array。
[0081]上述各单元的功能可对应于图1所示流程中的相应处理步骤,在此不再赘述。
[0082]基于同一发明构思,根据本发明上述实施例提供的PHP代码运行方法,相应地,本发明另一实施例还提供了 PHP代码运行装置,应用于Web服务器上的各Web应用,装置结构示意图如图4所示,具体包括:
[0083]缓存判定单元401,用于确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array ;
[0084]编译单元402,用于当该缓存判定单元确定缓存中未存在与该待运行PHP代码对应的Opcode Array时,对该待运行PHP代码进行编译,得到与该待运行PHP代码对应的Opcode Array,该Opcode Array中包括用于在该Opcode Array被Web应用执行时获取该待运行PHP代码对应该Web应用的代码目录的目录获取代码;
[0085]缓存单元403,用于缓存编译得到的该Opcode Array,
[0086]执行单元404,用于当该缓存判定单元确定缓存中已经存在与该待运行PHP代码对应的Opcode Array时,执行与该待运行PHP代码对应的Opcode Array ;以及当该缓存判定单元确定缓存中未存在与该待运行PHP代码对应的Opcode Array时,执行编译得到的该Opcode Array。
[0087]进一步的,执行单元404,具体用于在执行与该待运行PHP代码对应的OpcodeArray的过程中,通过执行该Opcode Array中的该目录获取代码,获取该待运行PHP代码对应该Web应用的代码目录。
[0088]上述各单元的功能可对应于图2所示流程中的相应处理步骤,在此不再赘述。
[0089]综上所述,本发明实施例提供的方案,在获取待编译PHP代码后,对该待编译PHP代码进行编译,得到与该待编译PHP代码对应的Opcode Array,该Opcode Array中包括用于在该Opcode Array被Web应用执行时获取上述待编译PHP代码对应该Web应用的代码目录的目录获取代码;并缓存该Opcode Array,用于Web服务器上各Web应用运行上述待编译PHP代码。采用本发明实施例提供的方案,节省了 Web服务器的处理资源和存储资源,提高了 Web服务器性能。
[0090]相应的,在Web服务器上的各Web应用需要运行PHP代码时,首先确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array ;当缓存中已经存在与该待运行PHP代码对应的Opcode Array时,执行与该待运行PHP代码对应的Opcode Array ;当缓存中未存在与该待运行PHP代码对应的Opcode Array时,对该待运行PHP代码进行编译,得到与该待运行PHP代码对应的Opcode Array,该Opcode Array中包括用于在该Opcode Array被Web应用执行时获取上述待运行PHP代码对应该Web应用的代码目录的目录获取代码;缓存并执行编译得到的该Opcode Array0采用本发明实施例提供的方案,提高了具有多个Web应用的Web服务器在运行PHP代码时的运行效率。
[0091]本申请的实施例所提供的PHP代码编译装置及PHP代码运行装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要PHP代码编译装置及PHP代码运行装置具有上述功能,都应该在本申请的保护范围之内。
[0092]本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0093]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0094]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0095]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种超文本预处理语言PHP代码编译方法,其特征在于,包括: 获取待编译PHP代码; 对所述待编译PHP代码进行编译,得到与所述待编译PHP代码对应的操作码阵列Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时,获取所述待编译PHP代码对应该互联网Web应用的代码目录的目录获取代码; 缓存所述Opcode Array,用于Web服务器上各Web应用运行所述待编译PHP代码。
2.如权利要求1所述的方法,其特征在于,缓存所述OpcodeArray,具体包括: 将包含所述待编译PHP代码的代码文件所在的节点信息作为键key,所述OpcodeArray作为值value,其中,所述待编译PHP代码在同一 Web服务器上仅保存在一个代码文件中; 对应缓存所述节点信息和所述Opcode Array0
3.如权利要求1所述的方法,其特征在于,缓存所述OpcodeArray,具体包括: 将所述待编译PHP代码的唯一代码标识作为key,所述Opcode Array作为值value ; 对应缓存所述唯一代码标识和所述Opcode Array ?
4.一种超文本预处理语言PHP代码运行方法,其特征在于,包括: 互联网Web服务器上的 各Web应用在需要运行PHP代码时,确定缓存中是否已经存在与待运行PHP代码对应的操作码阵列Opcode Array ; 当缓存中未存在与所述待运行PHP代码对应的Opcode Array时,对所述待运行PHP代码进行编译,得到与所述待运行PHP代码对应的Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时,获取所述待运行PHP代码对应该Web应用的代码目录的目录获取代码;以及,缓存并执行编译得到的所述Opcode Array ; 当缓存中已经存在与所述待运行PHP代码对应的Opcode Array时,执行与所述待运行PHP代码对应的Opcode Array。
5.如权利要求4所述的方法,其特征在于,执行与所述待运行PHP代码对应的OpcodeArray,具体包括: 在执行与所述待运行PHP代码对应的Opcode Array的过程中,通过执行所述OpcodeArray中的所述目录获取代码,获取所述待运行PHP代码对应该Web应用的代码目录。
6.一种超文本预处理语言PHP代码编译装置,其特征在于,包括: 代码获取单元,用于获取待编译PHP代码; 编译单元,用于对所述待编译PHP代码进行编译,得到与所述待编译PHP代码对应的操作码阵列Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时,获取所述待编译PHP代码对应该互联网Web应用的代码目录的目录获取代码;缓存单元,用于缓存所述Opcode Array,用于Web服务器上各Web应用运行所述待编译PHP代码。
7.如权利要求6所述的装置,其特征在于,所述缓存单元,具体用于将包含所述待编译PHP代码的代码文件所在的节点信息作为键key,所述Opcode Array作为值value,其中,所述待编译PHP代码在同一 Web服务器上仅保存在一个代码文件中;并对应缓存所述节点信息和所述Opcode Array。
8.如权利要求6所述的装置,其特征在于,所述缓存单元,具体用于将所述待编译PHP代码的唯一代码标识作为key,所述Opcode Array作为值value ;并对应缓存所述唯一代码标识和所述Opcode Array ?
9.一种超文本预处理语言PHP代码运行装置,应用于互联网Web服务器上的各Web应用,其特征在于,包括: 缓存判定单元,用于确定缓存中是否已经存在与待运行PHP代码对应的OpcodeArray ; 编译单元,用于当所述缓存判定单元确定缓存中未存在与所述待运行PHP代码对应的操作码阵列Opcode Array时,对所述待运行PHP代码进行编译,得到与所述待运行PHP代码对应的Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时获取所述待运行PHP代码对应该Web应用的代码目录的目录获取代码; 缓存单元,用于缓存编译得到的所述Opcode Array ; 执行单元,用于当所述缓存判定单元确定缓存中已经存在与所述待运行PHP代码对应的Opcode Array时,执行与所述待运行PHP代码对应的Opcode Array ;以及当所述缓存判定单元确定缓存中未存在与所述待运行PHP代码对应的Opcode Array时,执行编译得到的所述 Opcode Array。
10.如权利要求9所述的装置,其特征在于,所述执行单元,具体用于在执行与所述待运行PHP代码对应的Opcode Array的过程中,通过执行所述Opcode Array中的所述目录获取代码,获取所述待运行PHP代码对应该Web应用的代码目录 。
【文档编号】G06F9/45GK103488517SQ201310409987
【公开日】2014年1月1日 申请日期:2013年9月10日 优先权日:2013年9月10日
【发明者】陈磊 申请人:新浪网技术(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1