当前位置:首页 > Web开发 > 正文

但是既然opcode cache能带来CPU和内存开销的降低

2024-03-31 Web开发

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预措置惩罚惩罚器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发范围。PHP 奇特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执步履态网页。用PHP做出的动态页面与其他的编程语言对比,PHP是将措施嵌入到HTML(标准通用符号语言下的一个应用)文档中去执行,执行效率比完全生成HTML符号的CGI要高许多;PHP还可以执行编译儿女码,编译可以到达加密和优化代码运行,使代码运行更快。

PHP是通用处事器端脚本编程语言,,其主要用于web开发以实现动态web页面,它也是最早实现将脚本嵌入HTML源码文档中的处事器端脚本语言之一。同时,php还供给了一个命令行接口,因此,其也可以在大大都系统上作为一个独立的shell来使用。Rasmus Lerdorf于1994年开始开发PHP,它是初是一组被Rasmus Lerdorf称作“Personal Home Page Tool”的Perl脚本,这些脚本可以用于显示作者的简历并记录用户对其网站的访谒。后来,Rasmus Lerdorf使用C语言将这些Perl脚本重写为CGI措施,还为其增加了运行Web forms的能力以及与数据库交互的特性,并将其重定名为“Personal Home Page/Forms Interpreter”或“PHP/FI”。此时,PHP/FI已经可以用于开发简单的动态web措施了,这便是PHP 1.0。1995年6月,Rasmus Lerdorf把它的PHP颁布于comp.infosystems. Usenet讨论组,今后PHP开始走进人们的视野。1997年,其2.0版本颁布。

1997年,两名以色列措施员Zeev Suraski和Andi Gutmans重写的PHP的分析器(parser)成为PHP成长到3.0的根本,而且今后将PHP重定名为PHP: Hypertext Preprocessor。从此,这两名措施员开始重写整个PHP核心,并独立出来于1999年颁布了Zend Engine 1.0,这也意味着PHP 4.0的诞生。2004年7月,Zend Engine 2.0颁布,由此也将PHP带入了PHP5时代。PHP5包罗了许多重要的新特性,如增强的面向东西编程的撑持、撑持PDO(PHP Data Objects)扩展机制以及一系列对PHP性能的改造。

PHP Zend Engine

Zend Engine是开源的、PHP脚本语言的解释器,它最早是由以色列理工学院(Technion)的学生Andi Gutmans和Zeev Suraski所开发,Zend也正是此二人名字的合称。后来两人联合创设了Zend Technologies公司。

Zend Engine 1.0于1999年随PHP 4颁布,由C语言开发且颠末高度优化,并能够做为PHP的后端模块使用。Zend Engine为PHP供给了内存和资源打点的成果以及其它的一些标准处事,其高性能、可靠性和可扩展性在促进PHP成为一种风行的语言方面阐扬了重要感化。

Zend Engine的呈现将PHP代码的措置惩罚惩罚过程分成了两个阶段:

PHP刚开始用户访谒都是直接由解释器解释,插手zend之后就成了用户访谒时要先编译在执行二进制格局功效是第一次访谒要编译而第二次直接访谒二进制速度提升。首先是分析PHP代码并将其转换为称作Zend opcode的二进制格局(类似Java的字节码)并将其存储于内存中;第二阶段是使用Zend Engine去执行这些转换后的Opcode(Opcode只能在Zend引擎傍边运行)。

PHP架构图

技术图片

SAPI供给了一个和外部通信的接口,使得PHP可以和其他应用进行交互数据。php默认供给了很多种SAPI,常见的给apache的mod_php5,CGI,给IIS的ISAPI,还有Shell的CLI。对付一个基于apache的php应用,其运行流程可以简单归结如下:

apache -> httpd -> mod_phpfastcgi -> sapi -> php

PHP的Opcode

Opcode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL。当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操纵码(Operate Code,opcode)。Opcode cache的目地是制止反复编译,减少CPU和内存开销。如果动态内容的性能瓶颈不在于CPU和内存,而在于I/O操纵,好比数据库盘问带来的磁盘I/O开销,那么opcode cache的性能提升长短常有限的。但是既然opcode cache能带来CPU和内存开销的降低,这总归是功德。

PHP执行PHP脚本代码一般会颠末如下4个法式(确切的来说,应该是PHP的语言引擎Zend):

Scanning(Lexing) ——将PHP代码转换为语言片段(Tokens)
Parsing ——————将Tokens转换成简单而有意义的表达式
Compilation ———将表达式编译成Opocdes
Execution ————按序执行Opcodes,每次一条,从而实现PHP脚本的成果
来源:?p=3659

简单描述PHP成长历程

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30793.html