用PHP编写的一行行代码 是怎么在服务器端运行的

用PHP编写的一行行代码 是怎么在服务器端运行的,第1张

从图上可以看到,PHP实现了一个典型的动态语言执行过程:拿到一段代码后,经过词法解析、语法解析等阶段后,源程序会被翻译成一个个指令 (opcodes),然后ZEND虚拟机顺次执行这些指令完成 *** 作。PHP本身是用C实现的,因此最终调用的也都是C的函数,实际上,我们可以把PHP看 做是一个C开发的软件。

PHP的执行的核心是翻译出来的一条一条指令,也即opcode。

Opcode是PHP程序执行的最基本单位。一个opcode由两个参数(op1,op2)、返回值和处理函数组成。PHP程序最终被翻译为一组opcode处理函数的顺序执行。

常见的几个处理函数:

1    ZEND_ASSIGN_SPEC_CV_CV_HANDLER : 变量分配 ($a=$b)  

2    ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER:函数调用  

3    ZEND_CONCAT_SPEC_CV_CV_HANDLER:字符串拼接 $a$b  

4    ZEND_ADD_SPEC_CV_CONST_HANDLER: 加法运算 $a+2  

5    ZEND_IS_EQUAL_SPEC_CV_CONST:判断相等 $a==1  

6    ZEND_IS_IDENTICAL_SPEC_CV_CONST:判断相等 $a===1  

应用服务器

应用服务器是指通过各种协议把商业逻辑曝露给客户端的程序。它提供了访问商业逻辑的途径以供客户端应用程序使用。应用服务器使用此商业逻辑就像调用对象的一个方法一样。

基本信息

中文名

应用服务器

提供

访问商业逻辑的途径

实现

动态网页技术

目录

定义

随着Internet的发展壮大,“主机/终端”或“客户机/服务器”的传统的应用系统模式已经不能适应新的环境,于是就产生了新的分布式应用系统,相应地,新的开发模式也应运而生,即所谓的“浏览器/服务器”结构、“瘦客户机”模式。应用服务器便是一种实现这种模式核心技术。[1]

Web应用程序驻留在应用服务器(ApplicationServer)上。应用服务器为Web应用程序提供一种简单的和可管理的对系统资源的访问机制。它也提供低级的服务,如>

市场上可以得到多种应用服务器,其中包括Apache的Tomcat、IBM的WebSphereApplicationServer、CauchoTechnology的Resin、Macromedia的JRun、NECWebOTXApplicationServer、JBossApplicationServer、Oracle(并购了BEA)的WebLogic等。其中有些如NECWebOTXApplicationServer、WebLogic、WebSphere不仅仅是Servlet容器,它们也提供对EJB(EnterpriseJavaBeans)、JMS(JavaMessageService)以及其他JavaEE技术的支持。每种类型的应用服务器都有自己的优点、局限性和适用性。

分类

通常,根据确定文档内容的时间,所有文档可以划分为如下三类。

静态

静态:静态Web文档是一个存储于Web服务器的文件。静态文档的作者在写作的时候确定文档的内容。由于文档内容不会变化,所以对静态文档的每次访问都返回相同结果。

动态

动态:动态web文档不是以一个预先定义的格式存在,而是在浏览器访问web服务器时创建。当一个请求到达时,web服务器运行一个应用程序创建动态文档(dynamicdocuments),服务器返回程序的输出作为应答。由于每次访问都要创建新的文档,动态文档的内容是变化的。

活动

活动:一个活动文档不完全由服务器一端说明,而是包括一个计算并显示值的程序。当浏览器访问活动文档时,服务器返回一个浏览器可以本地执行的程序。当该程序运行时,它可以和用户交互执行并不停地改变显示。这样,活动文档的内容是不固定的-只要用户让程序保持运行,它总是在不停地变化。静态文档的主要优点在于它的简单、可靠性和性能。由于静态文档是直接指定格式。它可以由不懂编程的人创建。更重要的是,在已经创建和测试之后,静态文档永远是正确的。最后,浏览器可以快速存取文档,同时通过把文档放在本地盘上的缓冲区内以加快以后对这些文档的访问速度。静态文档的主要缺点是不灵活-当信息变化时文档必须重新设计。另外,改变是很耗费时间的,因为它需要人工修改文件。因此,静态文档不适合频繁变化的报告信息。动态文档的主要优点是它报告当前信息的能力。例如,一个动态文档可以用来报告股市行情、天气预报或音乐会售票情况等内容。当浏览器申请信息的时候,服务器运行一个应用程序,访问所需要的信息,并创建一个文档,服务器于是将该文档返回给浏览器。动态文档把任务放在服务器一端,浏览器采用和静态文档同样的方法访问动态文档。实际上,从浏览器的角度来看。动态文档和静态文档是无区别的。由于动态文档和静态文档都采用HTML编写,浏览器不知道服务器是从一个磁盘文件还是计算机程序中取得文档。动态文档的主要缺点是增加成本和不能显示变化的信息。和静态文档类似,动态文档在浏览器取得文档后不会再改变。因此在信息发送给浏览器之后,文档就开始过时。例如一个报告股市信息的动态文档,由于股市信息变化迅速,当用户访问时文档很快就过时。动态文档的创建和访问成本比静态文档昂贵。创建动态文档的代价较高,因为动态文档的创建者必须懂得如何写程序。另外,程序必须仔细编写和广泛测试,以保证输出的合法性。验证这样一个程序的正确性是很困难的,因为输入可以包含不同来源的多种数据。动态文档除了创建成本高,所需的硬件成本也较高,因为服务器端需要更强大的计算机。最后取出动态文档需要的时间稍多些,因为服务器需要额外的时间去运行程序创建文档。尽管在申请到达时动态文档才创建,但信息可能很快过时,活动文档相对于动态文档的主要优点在于它持续更改信息的能力。例如,只有活动文档能够快速改变显示以显示动画。更重要的是,活动文档能够直接访问信息源并连续更改显示。例如,一个显示股市行情的活动文档可以连续读取股市信息,并且不需要用户干预而自动修改显示。活动文档的主要缺点是创建和运行这种文档所需的额外费用,同时缺少安全性。首先,活动文档的显示需要更复杂的浏览器软件和一个强有力的计算机运行浏览器。另外,写正确的活动文档比写其他画面需要更多的编程技巧,所得到的结果文档更难于测试。而且,由于活动文档必须运行在客户端而不是服务器端,程序必须解决在不同客户上的兼容性问题,最后,活动文档存在着潜在的安全性问题,因为文档既输入信息又输出信息。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13048474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存