最近在学习php内核,看着看着就有了一些感想,于此记下。
一.PHP与服务器
PHP运行模式,这个看字面就知道啥意思了,一共有多少种,说不准,因为分类标准不一,在此,我说说一些大部分人同意的分类吧。有CLI模式,CGI模式,FAST-CGI模式,web模块模式,ISAPI模式。想知道细节可以自行查找资料。以下只是大概的对比。
备注:在PHP5.3以后,PHP不再有ISAPI模式,安装后也不再有php5isapi.dll这个文件。
以web模块模式为例对比其他模块。
web模块模式是将php作为一个模块,加载与web服务器上面,服务器负责进行多进程,php解释器负责多线程,相较于CLI/CGI模式(FAST-CGI模式是CGI模式的升级版)的单进程,无疑是更加合理的,面对多个使用者,服务器很好的承担起了很大一部分的网络访问压力,而php解释器只需要专心于应用单用户的请求即可,这是只有单线程的其他模式不可比拟的。且,作为一个模块,耦合性不高,也可以说成是高内聚底耦合,有了更大的可能性。
如:PHP不止可以运行在Apache服务器上,也可运行在IIS,Nginx,Lighttpd,Tomcat等等主流与非主流服务器上。
二.PHP扩展与Zend API
许多人使用php主要是他的易用与易学,然而大多数人并没有意识到php这门语言为什么易用,其实他的容易主要源于他的多扩展。我们平常使用的array函数,mysql函数,等等等等,其实都是一个个的扩展,正是拥有了这么多的扩展供我们使用,我们才能够很快的学会如何使用他,说道这个,就不得不提Zend Engine了,大多数扩展都是基于这个引擎的API即Zend API而编写的,这个引擎的其中一个作用是PHP的OO功能,他还有许多功能,也正是因为如此,使得这其中的关系过于紧密,耦合性高,对于可扩展性不是那么友好。