PHP代码编译方法、PHP代码运行方法及装置制造方法及图纸

技术编号:9519233 阅读:130 留言:0更新日期:2014-01-01 16:53
本发明专利技术公开了一种PHP代码编译方法、PHP代码运行方法及装置,包括:获取待编译PHP代码后,对该待编译PHP代码进行编译,得到与该待编译PHP代码对应的Opcode?Array,该Opcode?Array中包括用于在该Opcode?Array被Web应用执行时获取上述待编译PHP代码对应该Web应用的代码目录的目录获取代码;并缓存该Opcode?Array,用于Web服务器上各Web应用运行上述待编译PHP代码。采用本发明专利技术实施例提供的方案,节省了Web服务器的处理资源和存储资源,提高了Web服务器性能。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种PHP代码编译方法、PHP代码运行方法及装置,包括:获取待编译PHP代码后,对该待编译PHP代码进行编译,得到与该待编译PHP代码对应的Opcode?Array,该Opcode?Array中包括用于在该Opcode?Array被Web应用执行时获取上述待编译PHP代码对应该Web应用的代码目录的目录获取代码;并缓存该Opcode?Array,用于Web服务器上各Web应用运行上述待编译PHP代码。采用本专利技术实施例提供的方案,节省了Web服务器的处理资源和存储资源,提高了Web服务器性能。【专利说明】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代码在编译之后会产生与代码目录相关的常量值,该常量值是包含在生成的OpcodeArray中。因此,即使不同的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代码对应的OpcodeArray,所述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,所述OpcodeArray作为值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代码编译方法,其特征在于,包括:获取待编译PHP代码;对所述待编译PHP代码进行编译,得到与所述待编译PHP代码对应的操作码阵列Opcode?Array,所述Opcode?Array中包括用于在所述Opcode?Array被Web应用执行时,获取所述待编译PHP代码对应该互联网Web应用的代码目录的目录获取代码;缓存所述Opcode?Array,用于Web服务器上各Web应用运行所述待编译PHP代码。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈磊
申请(专利权)人:新浪网技术中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1