PHP运行机制
来源:互联网 发布:ds video windows 编辑:程序博客网 时间:2024/05/17 21:58
Java解决方案中,JSP和Servlet是作为独立的Java应用程序执行的,它们在初始化之后就驻留内存,通过特定的接口和Web服务器通信,完成相应工作。因此可使用数据库连接池缓存技术。
ASP.NET的机制与此类似。虽然也是一种解释型语言,但是仍然提供了Application对象来存放应用程序级的全局变量,它依托于ASP解释器在IIS中驻留的进程,在整个应用程序的生命期有效。
PHP 是一种纯解释型在服务端执行的可以内嵌HTML的脚本语言,尤其适合开发Web应用程序。请求一个 PHP 脚本时,PHP 会读取该脚本,并将其编译为 Zend 操作码,这是要执行的代码的一种二进制表示形式。随后,此操作码由 PHP 执行并丢弃。 PHP脚本在每次被解释时进行初始化,在解释完毕后终止运行。这种运行是互相独立的,每一次请求都会创建一个单独的进程或线程,来解释相应的页面文件。页 面创建的变量和其他对象,都只在当前的页面内部可见,无法跨越页面访问。在终止运行后,页面中申请的、没有被代码显式释放的外部资源,包括内存、数据库连 接、文件句柄、Socket连接等,都会被强行释放。也就是说,PHP无法在语言级别上实现直接访问跨越页面的变量,也无法创建驻留内存的对象。
PHP 这种独特的工作模型的优势在于,基本上解决了令人头疼的资源泄漏问题。Web应用的特点是大量的、短时间的并发处理,对各种资源的申请和释放工作非常频 繁,很容易导致泄漏甚至崩溃。PHP的运行机制决定它不存在常规的崩溃问题(顶多连接超时脚本停止执行),可以说PHP是较稳定的Web应用。但是,这种 机制的缺点也非常明显。最直接的后果是,PHP在语言级别无法实现跨页面的缓冲机制。这种缓冲机制缺失造成的影响,可以分成两个方面:一是对象的缓冲、二 是数据库连接的缓冲。PHP的工作模型即是缺点也是优势。
Apache启动后,PHP解释程序也随之启动;
PHP的启动过程有两步;
第二步是生成只针对当前请求的一些变量设置。
如同PHP启动一样,PHP的关闭也分两步:
PHP启动第一步:第一步也是最主要的一步,第一步的操作在任何请求到达之前就发生了。
启动Apache后,PHP解释程序也随之启动;
PHP调用各个扩展的MINIT方法,从而使这些扩展切换到可用状态。看看php.ini文件里打开了哪些扩展吧;
MINIT的意思是“模块初始化”。各个模块都定义了一组函数、类库等用以处理其他请求。
当一个页面请求发生时,SAPI层将控制权交给PHP层。于是PHP设置了用于回复本次请求所需的环境变量。同时,它还建立一个变量表,用来存放执行过程中产生的变量名和值。
PHP调用模块的RINIT方法即“请求初始化”。例子是Session模块的RINIT,如果在php.ini中启用了Session模块,在调用该模块的RINIT时就会初始化$_SESSION变量,并将相关内容读入;
RINIT方法可以看作是一个准备过程,在程序执行之间就会自动启动。
PHP关闭第一步:
一旦页面执行完毕(无论是执行到了文件末尾还是用exit或die函数中止),PHP就会启动清理程序。它会按顺序调用各个模块的RSHUTDOWN方法。
RSHUTDOWN用以清除程序运行时产生的符号表,也就是对每个变量调用unset函数。
PHP关闭第二步:最后,所有的请求都已处理完毕,SAPI也准备关闭了,PHP开始执行第二步:
PHP调用每个扩展的MSHUTDOWN方法,这是各个模块最后一次释放内存的机会。
这样,整个PHP生命周期就结束了。要注意的是,只有在服务器没有请求的情况下才会执行“启动第一步”和“关闭第二步”(http://www.myext.cn/Article/920.html)。
PHP游戏实例:网页游戏地下城与勇士、、策略游戏分析猜测、单词链通过一个单词生成单词链(http://www.ibm.com/developerworks/cn/opensource/os-php-gamescripts3/)。
- php运行机制
- PHP运行机制
- php运行机制
- php运行机制
- 理解Php的运行机制
- 探究php底层运行机制
- 探究PHP底层运行机制
- 探究PHP底层运行机制
- PHP底层运行机制
- 探究php底层运行机制
- 探究PHP底层运行机制
- 探究PHP底层运行机制
- PHP的运行机制
- 简述PHP运行机制
- php底部运行机制
- 浅析PHP运行机制
- 探究php底层运行机制
- PHP底层运行机制
- Linux文件系统的实现
- 360挺进中国搜索No.1 推出独立搜索品牌"好搜
- freemarker 数字输出中的逗号问题
- 观察者模式 Observer
- Android Studio 运行出现 Multiple dex files define Landroid/support/annotation/AnimRes;解决方法
- PHP运行机制
- ROUGE评价方法详解(一)
- cpdetector
- BZOJ 2595 Wc2008 游览计划 斯坦纳树
- background size 解析
- 详解强大的SQL注入工具——SQLMAP
- 未来支付方式离不开开源技术的支持
- 在eclipse下安装genymotion插件
- Qt-计算器