关于PHP的执行过程和原理
?
(1)简单阐述过程
? ? 我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;?
① PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);?
②PHP总共有三个模块:内核、Zend引擎、以及扩展层;?
③PHP内核用来处理请求、文件流、错误处理等相关操作;?
④Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;?
⑤扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。比如,我们需要mysql扩展来连接MySQL数据库;?
⑥当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;?
⑦最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上?
?
(2)引言
? ?PHP作为世界上最好的编程语音,被广泛的运用到Web开发中。因为其语法和C类似,有着非常平缓的学习曲线,越来越多的人使用PHP进行Web产品的快速开发。
? ?PHP世界里也涌现了很多开发框架,比如Laravel、ThinkPHP等,但不论何总框架,他们在处理Web请求时的模式都是一样的,本文首先阐述PHP开发Web应用的基本架构,然后分别分析Laravel和ThinkPHP在处理Web请求时的处理流程。
?
(3)PHP开发Web应用的基本架构
? ?PHP开发Web应用时用户的请求需要指向具体的入口文件。WebServer(网络服务器)是一个内容分发者,他接受用户的请求后,如果是请求的是css、js等静态文件,WebServer会找到这个文件,然后发送给浏览器;如果请求的是/index.php,根据配置文件,WebServer知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。
class=" wp-image-130 aligncenter" src="/Upload/Images/2018030902/62EF27C4F8380EE3.png" style="border-style: none; margin: 0px auto; max-width: 100%; padding: 0px; display: block; height: auto;">
?
? ?WebServer会依据CGI协议,将请求的Url、数据、Http Header等信息发送给PHP解析器,接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以CGI规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。整个处理过程如上图所示。
? ?
?
?
【拓展】
? ①CGI协议(common gateway interfac通用网关接口),具体我在后面文章里做了总结
?
?
?
?
?
?
?
?
?
参考网址:
http://blog.csdn.net/qq_28602957/article/details/53363963
http://blog.csdn.net/lsy90/article/details/51323993
http://www.jb51.net/article/74907.htm