php原理简述

语言有静态语言和动态语言之分,静态语言一般指先编译后执行,动态语言一般只边解释边执行。静态语言包括c,c++,Java等,动态语言有PHP,JavaScript,Python等。

任何语言都可以设计成动态或者静态,只是因为应用领域和需求不同而有了分别。编译型语言一次编译处处运行,更强调的是执行速度。而动态语言即时编写即时运行,更关注的是灵活。语言没有优劣,优劣的是一用语言的人。

跟开发语言相关的只是是编译原理,大家了解一下就行,编译语言一般的过程有词法分析,语法分析,语法编译,生成中间码,存储管理,优化等。    词法分析的过程会去除所有空格以及注释,所以这些都不会影响程序执行效率。

顺便说一下php的APC(纳入PHP扩展),XCODE,EACCELERATOR优化,这三款都是php加速器。通常情况下php的执行每一次都会有编译成中间码(OPCODE)的过程,而为了提高php的执行效率,加速器的原理就是缓存OPCODE,使得php程序只有第一次的时候进行编译,以后每一次执行直接执行中间码。(缓存是个非常重要的概念,比如模板编译,静态生成,文件缓存,数据库缓存,memcache,nginx反向代理等)

http://blog.csdn.net/luanlihun/article/details/19070413

下面说一下php语言本身的架构,如图:

一般考虑php组成主要简化分为3大块,php内核,Zend引擎,扩展层:

http://blog.csdn.net/luanlihun/article/details/19070413

PHP内核用来处理请求、文件流、错误处理等相关操作;

Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;

扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。比如,我们需要MySQL扩展来连接MySQL数据库; 当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。

Php外部通用通信接口SAPI简介:

SAPI指的是PHP具体应用的编程接口, 就像PC一样,无论安装哪些操作系统,只要满足了PC的接口规范都可以在PC上正常运行, PHP脚本要执行有很多种方式,通过Web服务器,或者直接在命令行下,也可以嵌入在其他程序中。

通常,我们使用Apache或者Nginx这类Web服务器来测试PHP脚本,或者在命令行下通过PHP解释器程序来执行。 脚本执行完后,Web服务器应答,浏览器显示应答信息,或者在命令行标准输出上显示内容。

我们很少关心PHP解释器在哪里。虽然通过Web服务器和命令行程序执行脚本看起来很不一样, 实际上它们的工作流程是一样的。命令行参数传递给PHP解释器要执行的脚本, 相当于通过url请求一个PHP页面。脚本执行完成后返回响应结果,只不过命令行的响应结果是显示在终端上。

脚本执行的开始都是以SAPI接口实现开始的。只是不同的SAPI接口实现会完成他们特定的工作,例如Apache的mod_php SAPI实现需要初始化从Apache获取的一些信息,在输出内容是将内容返回给Apache,其他的SAPI实现也类似。

脚本执行的开始都是以SAPI接口实现开始的。只是不同的SAPI接口实现会完成他们特定的工作,例如Apache的mod_php SAPI实现需要初始化从Apache获取的一些信息,在输出内容是将内容返回给Apache,其他的SAPI实现也类似。

MINIT    apache启动的整个生命周期或者命令行的执行过程中,只执行一次

RINIT     脚本被请求是激活模块

RSHUTDOWN 请求结束,或者脚本结束是运行。 Eg:可以记录运行时间

MSHUTDOWN SAPI生命周期结束时执行。

单进程请求

通常PHP是编译为apache的一个模块来处理PHP请求。Apache一般会采用多进程模式, Apache启动后会fork出多个子进程,每个进程的内存空间独立,每个子进程都会经过开始和结束环节,不过每个进程的开始阶段只在进程fork出来以来后进行,在整个进程的生命周期内可能会处理多个请求。只有在Apache关闭或者进程被结束之后才会进行关闭阶段,在这两个阶段之间会随着每个请求重复请求开始-请求关闭的环节

多进程请求

时间: 2024-11-05 19:34:27

php原理简述的相关文章

TCP/IP协议工作原理简述

TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 协议是什么?协议是一组为完成特定需求或功能而定义的标准通讯格式.协议是服务于具体需求或功能的,它不能独立存在. 制定TCP/IP协议的目的是为了解决主机互联以及互联的主机上的应用通讯的问题.TCP/IP协议共有四层:应用层.传输层.网络层.链路层.应用层实际就是我们的应用程序,对于非具体应用而言这一层的协议是未定义的,需要我们自己根据我们具体的业务模型来制定.传输

java多线程模式ThreadLocal原理简述及其使用详解

原创整理不易,转载请注明出处:java多线程模式ThreadLocal原理简述及其使用详解 代码下载地址:http://www.zuidaima.com/share/1781557457128448.htm ThreadLocal是为了使每个线程保存一份属于自己的数据. 先看一个使用ThreadLocal的实例. package com.zuidaima.aop.framework; import com.zuidaima.core.NamedThreadLocal; public abstra

Volley实现原理简述

Volley实现原理简述 一.介绍 Volley是Goole退出的Android异步网络请求框架和图片加载框架. 主要特点: 1)扩展性强.Volley大多是基于接口的设计. 2)符合Http规范. 3)Android2.3及以上版本默认基于HttpUrlConnection,2.3以下基于HttpClient. 4)提供简便的图片加载工具. 二.使用 1.调用:通过newRequestQueue()函数新建并启动一个请求队列,向RequestQueuezhon 不断add Request. 代

Gexmul虚拟机内存空间原理简述

Gxemul将内存空间分为两部分管理,一部分是物理内存,地址分配到0x00000000,另一部分是device的地址,注册device的时候由device自己指定空间 1 创建物理内存 memory.cc memory_new {     初始化物理内存参数     mem->physical_max = physical_max;     mem->dev_dyntrans_alignment = 4095;     创建物理内存     mem->pagetable = (unsig

FileCloud 的原理简述&自己搭建文件云

FileCloud 的原理简述&自己搭建文件云 copyright(c) by zcy 关于如何使用IIS创建asp服务,请读者自行研究 代码的存储: 根目录 filecloudEV.html 提前验证 filecloudEV.aspx 判断密码是否正确 filecloudMAIN.aspx 主界面 UpLoad.asp 上传界面 SaveFile.asp 保存文件 InputFilename.aspx 让用户输入文件名 AddPath.aspx 将当前文件加入文件清单 clsField.asp

Spark 学习: spark 原理简述与 shuffle 过程介绍

Spark学习: 简述总结 Spark 是使用 scala 实现的基于内存计算的大数据开源集群计算环境.提供了 java,scala, python,R 等语言的调用接口. Spark学习 简述总结 引言 1 Hadoop 和 Spark 的关系 Spark 系统架构 1 spark 运行原理 RDD 初识 shuffle 和 stage 性能优化 1 缓存机制和 cache 的意义 2 shuffle 的优化 3 资源参数调优 4 小结 本地搭建 Spark 开发环境 1 Spark-Scal

网络知识杂谈 - https - 原理简述

概述 简单描述 https 尽量介绍它的原理 实际的机制, 可能会更加复杂一些... 背景 这玩意, 困扰我好多年了 今天开始, 想做个了断 之前工作也接触过, 但从我的角度来说, 认识很浅 会配置 给个证书, 放好位置, 调一下选项 会抓包 开个 charles, 配置几下, 手机挂代理, 安装证书 具体干啥 只知道是个 加密的体系 因为抓包知道, 这不是明文 机制的理解和思考 看过 图解http, 没理解就放过去了... 最后, 将这个东西的时候, 如果你忍无可忍想说一句, 禁止套娃...

[hadoop]mapreduce原理简述

1.用于map的输入,先将输入数据切分成相等的分片,为每一个分片创建一个map worker,这里的切片大小不是随意订的,一般是与HDFS块大小一致,默认是64MB,一个节点上存储输入数据切片的最大size就是HDFS的块大小,当设置的切片size大于HDFS块大小,会引起节点之间的传输,占用带宽. 2.map worker调用用户编写的map函数对每个分片进行处理,并且将处理结果输出到本地存储(非HDFS) 3.对map的输出进行combiner操作,这里的的combiner主要是减少map与

ButterKnife的原理简述

注解处理器Java5 中叫APT(Annotation Processing Tool),在Java6开始,规范化为 Pluggable Annotation Processing. 第一步(收集信息) 找到所有被注解的属性或者方法,将所有的信息收集到对应的“类数据集”中. 第二步(生成源文件) 根据每一个“类数据集”,生成对应的java源文件.由于这些文件并不是在运行时生成的,因此也无需动态编译,注解处理器运行完成之后,编译器会处理所有的编译流程. 第三步(动态注入) 运行时动态注入,即用户常