CN103488517B - Php代码编译方法、php代码运行方法及装置 - Google Patents

Php代码编译方法、php代码运行方法及装置 Download PDF

Info

Publication number
CN103488517B
CN103488517B CN201310409987.8A CN201310409987A CN103488517B CN 103488517 B CN103488517 B CN 103488517B CN 201310409987 A CN201310409987 A CN 201310409987A CN 103488517 B CN103488517 B CN 103488517B
Authority
CN
China
Prior art keywords
code
php
opcode array
compiled
array
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.)
Active
Application number
CN201310409987.8A
Other languages
English (en)
Other versions
CN103488517A (zh
Inventor
陈磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sina Technology China Co Ltd
Original Assignee
Sina Technology China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sina Technology China Co Ltd filed Critical Sina Technology China Co Ltd
Priority to CN201310409987.8A priority Critical patent/CN103488517B/zh
Publication of CN103488517A publication Critical patent/CN103488517A/zh
Application granted granted Critical
Publication of CN103488517B publication Critical patent/CN103488517B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种PHP代码编译方法、PHP代码运行方法及装置,包括:获取待编译PHP代码后,对该待编译PHP代码进行编译,得到与该待编译PHP代码对应的Opcode Array,该Opcode Array中包括用于在该Opcode Array被Web应用执行时获取上述待编译PHP代码对应该Web应用的代码目录的目录获取代码;并缓存该Opcode Array,用于Web服务器上各Web应用运行上述待编译PHP代码。采用本发明实施例提供的方案,节省了Web服务器的处理资源和存储资源,提高了Web服务器性能。

Description

PHP代码编译方法、PHP代码运行方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种PHP代码编译方法、PHP代码运行方法及装置。
背景技术
超文本预处理语言PHP(Hypertext Preprocessor)是一种动态网站脚本编程语言,可以运行在互联网Web服务端,通常跟开源的Web服务器一起搭建动态Web站点。
现有技术中运行PHP代码的流程可以如下:
第一步,编译PHP代码为一系列操作码Opcode组成的集合,可以称为操作码阵列Opcode Array;
第二步,加载并执行该Opcode Array。
相同的PHP代码,编译之后的Opcode Array也是相同的,所以为了提高PHP代码的运行效率,在编译完成后可以缓存PHP代码对应的Opcode Array,以便后续需要再次运行该PHP代码时,直接获取缓存的与该PHP代码对应的Opcode Array执行,从而省去了编译代码的步骤,提高了PHP代码的运行效率。
云计算中的平台即服务(PaaS,Platform-as-a-server)模式,是将软件研发平台作为一种服务提供给用户,用户仅需将应用托管至PaaS平台上,应用的运维、数据监控和数据统计等工作均由PaaS平台来完成。
在提供PaaS平台的Web服务器中,需要运行多个Web应用,该Web应用也可以是Web网站。在同一台Web服务器上,同一PHP代码,对应不同Web应用的代码目录是不同的,而PHP代码在编译之后会产生与代码目录相关的常量值,该常量值是包含在生成的Opcode Array中。因此,即使不同的Web应用中存在相同的PHP代码,由于对应不同Web应用该PHP代码的代码目录不同,则编译所生成的Opcode Array也因所包含的该常量值不同而有所不同。
在实际应用中,大量的Web应用可能使用相同的PHP开源软件,所以同一台Web服务器上不同的Web应用将使用一些相同PHP代码,然而由于对应不同Web应用该相同PHP代码的代码目录是不同的,所以缓存的Opcode Array不同,使得针对每个Web应用都需要编译一次该PHP代码,且都将缓存一份该PHP代码对应的Opcode Array,从而导致Web服务器处理资源和存储资源的浪费,降低Web服务器性能,并且相同的PHP代码的重复编译也降低了代码的运行效率。
发明内容
本发明实施例提供一种PHP代码编译方法及装置,用以解决现有技术中存在的具有多个Web应用的Web服务器在缓存PHP代码对应的Opcode Array时处理资源和存储资源浪费的问题。
本发明实施例还提供一种PHP代码运行方法及装置,用以解决现有技术中存在的具有多个Web应用的Web服务器在运行PHP代码时效率较低的问题。
本发明实施例提供一种PHP代码编译方法,包括:
获取待编译PHP代码;
对所述待编译PHP代码进行编译,得到与所述待编译PHP代码对应的Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时,获取所述待编译PHP代码对应该Web应用的代码目录的目录获取代码;
缓存所述Opcode Array,用于Web服务器上各Web应用运行所述待编译PHP代码。
本发明实施例提供的方法中,由于经过编译得到的与待编译PHP代码对应的Opcode Array中,包括的是用于在该Opcode Array被Web应用执行时获取该待编译PHP代码对应该Web应用的代码目录的目录获取代码,而并非是该待编译PHP代码对应某一个Web应用的代码目录,因此针对不同Web应用,相同PHP代码经过编译生成的Opcode Array相同,所以该相同PHP代码只需编译一次,并将Opcode Array缓存,各Web应用即可以共享缓存的与该相同PHP代码对应的Opcode Array,节省了Web服务器的处理资源和存储资源,提高了Web服务器性能。
进一步的,缓存所述Opcode Array,具体包括:
将包含所述待编译PHP代码的代码文件所在的节点信息作为键key,所述Opcode Array作为值value,其中,所述待编译PHP代码在同一Web服务器上仅保存在一个代码文件中;对应缓存所述节点信息和所述Opcode Array。
这样,可以使得当后续需要运行该待编译PHP代码时,可以通过包含该待编译PHP代码的代码文件所在的节点信息对应的key,确定与该key对应的value,并确定是否缓存有与其对应的Opcode Array。
进一步的,缓存所述Opcode Array,具体包括:
将所述待编译PHP代码的唯一代码标识作为key,所述Opcode Array作为值value;对应缓存所述唯一代码标识和所述Opcode Array。
这样,可以使得当后续需要运行该待编译PHP代码时,可以通过该待编译PHP代码的唯一代码标识对应的key,确定与该key对应的value,并确定是否缓存有与其对应的Opcode Array。
本发明实施例还提供一种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。
采用本发明实施例提供的上述方法,当Web服务器上的各Web应用在需要运行PHP代码时,首先确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array,且该Opcode Array可以由各Web应用共享,如果已经存在该Opcode Array,直接获取并执行该Opcode Array,省去了编译PHP代码的步骤,提高了具有多个Web应用的Web服务器在运行PHP代码时的运行效率。
进一步的,执行与所述待运行PHP代码对应的Opcode Array,具体包括:
在执行与所述待运行PHP代码对应的Opcode Array的过程中,通过执行所述Opcode Array中的所述目录获取代码,获取所述待运行PHP代码对应该Web应用的代码目录。
这样,即可以通过该目录获取代码,获取该待运行PHP代码对应的Web应用的代码目录,使得在执行该对应Opcode Array之后,得到与现有技术中该待运行PHP代码运行后相同的结果。
本发明实施例还提供一种PHP代码编译装置,包括:
代码获取单元,用于获取待编译PHP代码;
编译单元,用于对所述待编译PHP代码进行编译,得到与所述待编译PHP代码对应的Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时,获取所述待编译PHP代码对应该Web应用的代码目录的目录获取代码;
缓存单元,用于缓存所述Opcode Array,用于Web服务器上各Web应用运行所述待编译PHP代码。
采用本发明实施例提供的上述装置,由于经过编译得到的与待编译PHP代码对应的Opcode Array中,包括的是用于在该Opcode Array被Web应用执行时获取该待编译PHP代码对应该Web应用的代码目录的目录获取代码,而并非是该待编译PHP代码对应某一个Web应用的代码目录,因此针对不同Web应用,相同PHP代码经过编译生成的Opcode Array相同,所以该相同PHP代码只需编译一次,并将Opcode Array缓存,各Web应用即可以共享缓存的与该相同PHP代码对应的Opcode Array,节省了Web服务器的处理资源和存储资源,提高了Web服务器性能。
进一步的,所述缓存单元,具体用于将包含所述待编译PHP代码的代码文件所在的节点信息作为键key,所述Opcode Array作为值value,其中,所述待编译PHP代码在同一Web服务器上仅保存在一个代码文件中;并对应缓存所述节点信息和所述Opcode Array。
这样,可以使得当后续需要运行该待编译PHP代码时,可以通过包含所述待编译PHP代码的代码文件所在的节点信息对应的key,确定与该key对应的value,并确定是否缓存有与其对应的Opcode Array。
进一步的,所述缓存单元,具体用于将所述待编译PHP代码的唯一代码标识作为key,所述Opcode Array作为值value;并对应缓存所述唯一代码标识和所述Opcode Array。
这样,可以使得当后续需要运行该待编译PHP代码时,可以通过该待编译PHP代码的唯一代码标识对应的key,确定与该key对应的value,并确定是否缓存有与其对应的Opcode Array。
本发明实施例还提供一种PHP代码运行装置,应用于Web服务器上的各Web应用,包括:
缓存判定单元,用于确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array;
编译单元,用于当所述缓存判定单元确定缓存中未存在与所述待运行PHP代码对应的Opcode Array时,对所述待运行PHP代码进行编译,得到与所述待运行PHP代码对应的Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时获取所述待运行PHP代码对应该Web应用的代码目录的目录获取代码;
缓存单元,用于缓存编译得到的所述Opcode Array;
执行单元,用于当所述缓存判定单元确定缓存中已经存在与所述待运行PHP代码对应的Opcode Array时,执行与所述待运行PHP代码对应的OpcodeArray;以及当所述缓存判定单元确定缓存中未存在与所述待运行PHP代码对应的Opcode Array时,执行编译得到的所述Opcode Array。
采用本发明实施例提供的上述装置,当Web服务器上的各Web应用在需要运行PHP代码时,首先确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array,且该Opcode Array可以由各Web应用共享,如果已经存在该Opcode Array,直接获取并执行该Opcode Array,省去了编译PHP代码的步骤,提高了具有多个Web应用的Web服务器在运行PHP代码时的运行效率。
进一步的,所述执行单元,具体用于在执行与所述待运行PHP代码对应的Opcode Array的过程中,通过执行所述Opcode Array中的所述目录获取代码,获取所述待运行PHP代码对应该Web应用的代码目录。
这样,即可以通过该目录获取代码,获取该待运行PHP代码对应的Web应用的代码目录之后,使得在执行该对应Opcode Array之后,得到与现有技术中该待运行PHP代码运行后相同的结果。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例提供的PHP代码编译方法的流程图;
图2为本发明实施例提供的PHP代码运行方法的流程图;
图3为本发明实施例提供的PHP代码编译装置的结构示意图;
图4为本发明实施例提供的PHP代码运行装置的结构示意图。
具体实施方式
为了给出具有多个Web应用的Web服务器在缓存PHP代码对应的OpcodeArray时节省处理资源和存储资源的实现方案,本发明实施例提供了一种PHP代码编译方法及装置;为了给出具有多个Web应用的Web服务器在运行PHP代码时提高运行效率的实现方案,本发明实施例还提供了一种PHP代码运行方法及装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明实施例提供一种PHP代码编译方法,如图1所示,包括:
步骤101、获取待编译PHP代码。
步骤102、对该待编译PHP代码进行编译,得到与该待编译PHP代码对应的Opcode Array,该Opcode Array中包括用于在该Opcode Array被Web应用执行时,获取该待编译PHP代码对应该Web应用的代码目录的目录获取代码。
步骤103、缓存该Opcode Array,用于Web服务器上各Web应用运行该待编译PHP代码。
进一步的,在上述步骤103中,缓存编译得到的该Opcode Array,当该待编译PHP代码在同一Web服务器上仅保存在一个代码文件中时,可以将包含该待编译PHP代码的代码文件所在的节点信息作为键key,与该待编译PHP代码对应的Opcode Array作为值value,对应缓存该节点信息和该OpcodeArray。从而当后续需要运行该待编译PHP代码时,可以通过包含该待编译PHP代码的代码文件所在的节点信息对应的key,确定与该key对应的value,并确定是否缓存有与其对应的Opcode Array。
上述步骤103中缓存编译得到的该Opcode Array,也可以将该待编译PHP代码的唯一代码标识作为key,与该待编译PHP代码对应的Opcode Array作为值value,对应缓存该唯一代码标识和该Opcode Array。从而使得当后续需要运行该待编译PHP代码时,可以通过与该待编译PHP代码的唯一代码标识对应的key,确定与该key对应的value,并确定是否缓存有与其对应的OpcodeArray。
在实现本发明实施例提供的上述步骤102时,可以在现有PHP语言编译工具的基础上进行改进,修改PHP语言编译工具中Zend引擎的与代码目录相关的关键字的PHP语法解析部分,使其在编译过程中不再产生与代码目录相关的常量值,而生成对应Web应用的代码目录的目录获取代码,使得在后续运行期间像执行函数一样执行这段代码来获取代码目录。
本发明实施例提供的上述PHP代码编译方法中,由于经过编译得到的与待编译PHP代码对应的Opcode Array中,包括的是用于在该Opcode Array被Web应用执行时获取该待编译PHP代码对应该Web应用的代码目录的目录获取代码,而并非是该待编译PHP代码对应某一个Web应用的代码目录,因此针对不同Web应用,相同PHP代码经过编译生成的Opcode Array相同,所以该相同PHP代码只需编译一次,并将Opcode Array缓存,各Web应用即可以共享缓存的与该相同PHP代码对应的Opcode Array,节省了Web服务器的处理资源和存储资源,提高了Web服务器性能。
相应的,基于上述PHP代码编译方法,本发明实施例还提供一种PHP代码运行方法,应用于Web服务器上的各Web应用,如图2所示,包括:
步骤201、在需要运行PHP代码时,确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array,如果是,执行步骤202,如果否,执行步骤步骤203。
步骤202、当缓存中已经存在与该待运行PHP代码对应的Opcode Array时,执行与该待运行PHP代码对应的Opcode Array,流程结束。
步骤203、当缓存中未存在与该待运行PHP代码对应的Opcode Array时,对该待运行PHP代码进行编译,得到与该待运行PHP代码对应的OpcodeArray,该Opcode Array中包括用于在该Opcode Array被Web应用执行时获取该待运行PHP代码对应该Web应用的代码目录的目录获取代码。
步骤204、缓存并执行编译得到的该Opcode Array。
本发明实施例中,对于Web服务器上的各Web应用中相同的PHP代码文件,可以在该Web服务器上只存储一份,在各Web应用代码目录下保存一个链接,指向所存储的PHP代码文件,使得在运行PHP代码的过程中,当需要对PHP代码进行编译时,可以通过该链接获取该PHP代码。
本发明实施例提供的上述PHP代码运行方法中,上述步骤202中已经缓存的与该待运行PHP代码对应的Opcode Array,可以是当前将要运行该待运行PHP代码的Web应用之前编译得到的,也可以其它Web应用之前在运行该待运行PHP代码时编译得到的。
在上述步骤202和步骤204中,在执行与该待运行PHP代码对应的OpcodeArray的过程中,由于该Opcode Array中包括了用于在该Opcode Array被Web应用执行时,获取该待运行PHP代码对应该Web应用的代码目录的目录获取代码,所以可以通过执行该Opcode Array中的该目录获取代码,获取到该待运行PHP代码对应该Web应用的代码目录,使得在执行该对应Opcode Array之后,得到与现有技术中该待运行PHP代码运行后相同的结果。
上述步骤203中对该待运行PHP代码进行编译,以及上述步骤204中存储编译得到的与该待运行PHP代码对应的Opcode Array,可以采用与上述PHP代码编译方法相同的方法进行编译,在此不再进行详细描述。
相应的,当该待编译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。
相应的,当存储与该待运行PHP代码对应的Opcode Array,是将该运行PHP代码的唯一代码标识作为key,与该待编译PHP代码对应的Opcode Array作为值value,对应缓存该唯一代码标识和该Opcode Array时,则在上述步骤201中,确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array时,可以根据待运行PHP代码的唯一代码标识,确定缓存里是否已经存在对应该唯一代码标识的Opcode Array,如果已经存在,表示缓存中已经存在与待运行PHP代码对应的Opcode Array,如果不存在,表示缓存中未存在与待运行PHP代码对应的Opcode Array。
采用本发明实施例提供的上述PHP代码运行方法,当Web服务器上的各Web应用在需要运行PHP代码时,首先确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array,且该Opcode Array可以由各Web应用共享,如果已经存在该Opcode Array,直接获取并执行该Opcode Array,省去了编译PHP代码的步骤,提高了具有多个Web应用的Web服务器在运行PHP代码时的运行效率。
基于同一发明构思,根据本发明上述实施例提供的PHP代码编译方法,相应地,本发明另一实施例还提供了PHP代码编译装置,装置结构示意图如图3所示,具体包括:
代码获取单元301,用于获取待编译PHP代码;
编译单元302,用于对该待编译PHP代码进行编译,得到与该待编译PHP代码对应的Opcode Array,该Opcode Array中包括用于在该Opcode Array被Web应用执行时,获取该待编译PHP代码对应该Web应用的代码目录的目录获取代码;
缓存单元303,用于缓存该Opcode Array,用于Web服务器上各Web应用运行该待编译PHP代码。
进一步的,缓存单元303,具体用于将包含该待编译PHP代码的代码文件所在的节点信息作为键key,该Opcode Array作为值value,其中,该待编译PHP代码在同一Web服务器上仅保存在一个代码文件中;并对应缓存所述节点信息和该Opcode Array。
进一步的,缓存单元303,具体用于将该待编译PHP代码的唯一代码标识作为key,该Opcode Array作为值value;并对应缓存该唯一代码标识和该Opcode Array。
上述各单元的功能可对应于图1所示流程中的相应处理步骤,在此不再赘述。
基于同一发明构思,根据本发明上述实施例提供的PHP代码运行方法,相应地,本发明另一实施例还提供了PHP代码运行装置,应用于Web服务器上的各Web应用,装置结构示意图如图4所示,具体包括:
缓存判定单元401,用于确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array;
编译单元402,用于当该缓存判定单元确定缓存中未存在与该待运行PHP代码对应的Opcode Array时,对该待运行PHP代码进行编译,得到与该待运行PHP代码对应的Opcode Array,该Opcode Array中包括用于在该OpcodeArray被Web应用执行时获取该待运行PHP代码对应该Web应用的代码目录的目录获取代码;
缓存单元403,用于缓存编译得到的该Opcode Array,
执行单元404,用于当该缓存判定单元确定缓存中已经存在与该待运行PHP代码对应的Opcode Array时,执行与该待运行PHP代码对应的OpcodeArray;以及当该缓存判定单元确定缓存中未存在与该待运行PHP代码对应的Opcode Array时,执行编译得到的该Opcode Array。
进一步的,执行单元404,具体用于在执行与该待运行PHP代码对应的Opcode Array的过程中,通过执行该Opcode Array中的该目录获取代码,获取该待运行PHP代码对应该Web应用的代码目录。
上述各单元的功能可对应于图2所示流程中的相应处理步骤,在此不再赘述。
综上所述,本发明实施例提供的方案,在获取待编译PHP代码后,对该待编译PHP代码进行编译,得到与该待编译PHP代码对应的Opcode Array,该Opcode Array中包括用于在该Opcode Array被Web应用执行时获取上述待编译PHP代码对应该Web应用的代码目录的目录获取代码;并缓存该OpcodeArray,用于Web服务器上各Web应用运行上述待编译PHP代码。采用本发明实施例提供的方案,节省了Web服务器的处理资源和存储资源,提高了Web服务器性能。
相应的,在Web服务器上的各Web应用需要运行PHP代码时,首先确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array;当缓存中已经存在与该待运行PHP代码对应的Opcode Array时,执行与该待运行PHP代码对应的Opcode Array;当缓存中未存在与该待运行PHP代码对应的Opcode Array时,对该待运行PHP代码进行编译,得到与该待运行PHP代码对应的OpcodeArray,该Opcode Array中包括用于在该Opcode Array被Web应用执行时获取上述待运行PHP代码对应该Web应用的代码目录的目录获取代码;缓存并执行编译得到的该Opcode Array。采用本发明实施例提供的方案,提高了具有多个Web应用的Web服务器在运行PHP代码时的运行效率。
本申请的实施例所提供的PHP代码编译装置及PHP代码运行装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要PHP代码编译装置及PHP代码运行装置具有上述功能,都应该在本申请的保护范围之内。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种超文本预处理语言PHP代码编译方法,其特征在于,包括:
获取待编译PHP代码;
对所述待编译PHP代码进行编译,得到与所述待编译PHP代码对应的操作码阵列Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时,获取所述待编译PHP代码对应该Web应用的代码目录的目录获取代码;
缓存所述Opcode Array,用于Web服务器上各Web应用运行所述待编译PHP代码。
2.如权利要求1所述的方法,其特征在于,缓存所述Opcode Array,具体包括:
将包含所述待编译PHP代码的代码文件所在的节点信息作为键key,所述Opcode Array作为值value,其中,所述待编译PHP代码在同一Web服务器上仅保存在一个代码文件中;
对应缓存所述节点信息和所述Opcode Array。
3.如权利要求1所述的方法,其特征在于,缓存所述Opcode Array,具体包括:
将所述待编译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代码对应的Opcode Array,具体包括:
在执行与所述待运行PHP代码对应的Opcode Array的过程中,通过执行所述Opcode Array中的所述目录获取代码,获取所述待运行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,所述OpcodeArray作为值value,其中,所述待编译PHP代码在同一Web服务器上仅保存在一个代码文件中;并对应缓存所述节点信息和所述Opcode Array。
8.如权利要求6所述的装置,其特征在于,所述缓存单元,具体用于将所述待编译PHP代码的唯一代码标识作为key,所述Opcode Array作为值value;并对应缓存所述唯一代码标识和所述Opcode Array。
9.一种超文本预处理语言PHP代码运行装置,应用于互联网Web服务器上的各Web应用,其特征在于,包括:
缓存判定单元,用于确定缓存中是否已经存在与待运行PHP代码对应的Opcode Array;
编译单元,用于当所述缓存判定单元确定缓存中未存在与所述待运行PHP代码对应的操作码阵列Opcode Array时,对所述待运行PHP代码进行编译,得到与所述待运行PHP代码对应的Opcode Array,所述Opcode Array中包括用于在所述Opcode Array被Web应用执行时获取所述待运行PHP代码对应该Web应用的代码目录的目录获取代码;
缓存单元,用于缓存编译得到的所述Opcode Array;
执行单元,用于当所述缓存判定单元确定缓存中已经存在与所述待运行PHP代码对应的Opcode Array时,执行与所述待运行PHP代码对应的OpcodeArray;以及当所述缓存判定单元确定缓存中未存在与所述待运行PHP代码对应的Opcode Array时,执行编译得到的所述Opcode Array。
10.如权利要求9所述的装置,其特征在于,所述执行单元,具体用于在执行与所述待运行PHP代码对应的Opcode Array的过程中,通过执行所述Opcode Array中的所述目录获取代码,获取所述待运行PHP代码对应该Web应用的代码目录。
CN201310409987.8A 2013-09-10 2013-09-10 Php代码编译方法、php代码运行方法及装置 Active CN103488517B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310409987.8A CN103488517B (zh) 2013-09-10 2013-09-10 Php代码编译方法、php代码运行方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310409987.8A CN103488517B (zh) 2013-09-10 2013-09-10 Php代码编译方法、php代码运行方法及装置

Publications (2)

Publication Number Publication Date
CN103488517A CN103488517A (zh) 2014-01-01
CN103488517B true CN103488517B (zh) 2016-08-10

Family

ID=49828774

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310409987.8A Active CN103488517B (zh) 2013-09-10 2013-09-10 Php代码编译方法、php代码运行方法及装置

Country Status (1)

Country Link
CN (1) CN103488517B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105183629B (zh) * 2014-05-29 2018-06-22 北京基调网络系统有限公司 分析php应用软件性能的诊断系统及其方法和性能管理平台
CN104866327B (zh) * 2015-06-19 2018-01-02 上海斐讯数据通信技术有限公司 一种php开发方法及框架
CN110874211A (zh) * 2018-09-04 2020-03-10 北京奇虎科技有限公司 一种php文件访问方法及装置
CN111222102A (zh) * 2018-11-27 2020-06-02 上海来三网络科技有限公司 一种php源代码保护方法
CN110109676B (zh) * 2019-04-30 2023-10-17 努比亚技术有限公司 编译方法、终端及计算机可读存储介质
CN113742716B (zh) * 2021-11-04 2022-02-08 腾讯科技(深圳)有限公司 代码运行方法、装置、电子设备、存储介质和程序产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101122866A (zh) * 2007-09-12 2008-02-13 中兴通讯股份有限公司 集成开发环境中的程序代码编译方法
CN102830965A (zh) * 2012-07-26 2012-12-19 复旦大学 一种Java虚拟机中位置无关代码的缓存与复用方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7350200B2 (en) * 2001-03-29 2008-03-25 Intel Corporation Method and system of controlling dynamically compiled native code size

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101122866A (zh) * 2007-09-12 2008-02-13 中兴通讯股份有限公司 集成开发环境中的程序代码编译方法
CN102830965A (zh) * 2012-07-26 2012-12-19 复旦大学 一种Java虚拟机中位置无关代码的缓存与复用方法

Also Published As

Publication number Publication date
CN103488517A (zh) 2014-01-01

Similar Documents

Publication Publication Date Title
CN103488517B (zh) Php代码编译方法、php代码运行方法及装置
US6993754B2 (en) Annotations to executable images for improved dynamic optimization functions
KR101385420B1 (ko) 메타데이터 추출을 통한 동적 언어의 실행
US8799889B2 (en) Application downloading
CN104298534B (zh) 基于Lua语言的编程方法和装置
CN106021257A (zh) 一种支持在线编程的爬虫抓取数据方法、装置及系统
KR101782995B1 (ko) 자바스크립트 코드 저장 및 최적화를 통한 웹 브라우징 방법 및 장치
CN104991773A (zh) 程序生成方法及装置
CN105512324A (zh) 一种打包文件局部更新的前端模块化加载器
CN105068802B (zh) 一种跨设备运行的Web应用软件实现系统和方法
CN103412754A (zh) 动态语言代码执行方法和装置
CN108197027A (zh) 软件性能优化方法、可存储介质、计算机、计算机程序
CN105739992B (zh) 基于gcc编译器的软件控制内存分拆和映射的方法及系统
CN113196243A (zh) 使用编译器生成的仿真优化元数据改进仿真和跟踪性能
US8397217B2 (en) Integrating templates into tests
Finkel et al. Clangjit: Enhancing c++ with just-in-time compilation
KR20130037995A (ko) 멀티테넌시를 지원하는 비즈니스 로직 설정방법
KR102160251B1 (ko) 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치
CN105988854A (zh) 动态编译方法及装置
US9836288B2 (en) Eager and optimistic evaluation of promises
CN109062577A (zh) 一种前端脚本拆分与解构优化方法及系统
CN110045950A (zh) 基于nodejs的静态页面开发脚手架方法
CN105786465A (zh) 一种脚本语言执行方法及装置
US20110246972A1 (en) Method of selecting an expression evaluation technique for domain-specific language compilation
CN109344353A (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
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230406

Address after: Room 501-502, 5/F, Sina Headquarters Scientific Research Building, Block N-1 and N-2, Zhongguancun Software Park, Dongbei Wangxi Road, Haidian District, Beijing, 100193

Patentee after: Sina Technology (China) Co.,Ltd.

Address before: 100080, International Building, No. 58 West Fourth Ring Road, Haidian District, Beijing, 20 floor

Patentee before: Sina.com Technology (China) Co.,Ltd.

TR01 Transfer of patent right