PHP内核基础学习心得(一)

  前言:

楼主只是刚刚接触PHP内核学习这个纯粹是个人兴趣,写博客也是为了记录下来学到的东西以便之后需要时查看,如有写的不好的地方还望各位大神不吝赐教。

    PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言语法吸收了C语言JavaPerl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了CJavaPerl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密优化代码运行,使代码运行更快。                       ------摘自百度

通常情况下PHP有两种被运行的模式:CGI:公共网关接口(Common Gateway Interface)、CLI:命令行界面(Command Line Interface),其他的方式如FastCGI这里先不讨论。关CGI和CLI的相关内容参考以下文章http://blog.csdn.net/wmlml/article/details/47346201。

在平常的Web环境中,我们并不需要单独启动PHP,它一般都会作为一个模块自动加载到web-server里面去,如apache加载的php5.so。 只要我们启动了web-server,被一起加载的php便会和服务器一起解析被请求的php脚本。当然,这不是绝对的,当我们以fastcgi(详情参考http://www.cnblogs.com/lidabo/p/4212419.html)模式安装php的时候,往往就需要手动在终端运行php -b 127.0.0.1:9999或其它 命令来启动来启动php后端服务。

其实无论哪种模式,PHP的工作原理都是一样的, 都是作为一种SAPI在运行(Server Application Programming Interface: the API used by PHP to interface with Web Servers)。当我们在终端敲入php这个命令时候,它使用的是"command line sapi"!它就像一个mini的web服务器一样来支持php完成这个请求,请求完成后再重新把控制权交给终端。

简单来说, SAPI就是PHP和外部环境的代理器。它把外部环境抽象后, 为内部的PHP提供一套固定的, 统一的接口, 使得PHP自身实现能够不受错综复杂的外部环境影响,保持一定的独立性

在PHP启动时,通常会有两种概念上的启动,一是PHP作为Apavhe的一个模块启动,Apache会加载一些扩展、常量、类、资源等等,这些东西都统一的被加载进内存中,直到Apache卸载PHP这个模块。所以通常使用php去编写的一些web脚本之所以不用编译除了和zend引擎的关系之外和PHP的第一次启动也有很大的关系。第二次启动是Apache分配过来一个页面请求时PHP的启动。

说完了启动就不得不说终止了,两次启动也对应了两次终止。当一个PHP脚本执行完毕时(也可能被die()exit())会有一次终止,与之对应的是上文的第二次启动,此时的终止仅仅释放了运行的PHP脚本中占用的内存资源,第一次启动的被当作Apache模块的内存并没有释放,直到我们告诉Apache对PHP进行stop命令时才会释放这部分内存。

对于上述的两次启动和终止的过程并不仅仅是讲到的那么简单,其中涉及了很多PHP预定义好的函数与扩展。具体内容网上已有非常详细和全面的介绍,本人这里不敢赘述。详情参考http://www.laruence.com/2008/08/12/180.html,http://www.cunmou.com/phpbook/1.2.md。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值