动态页面是如何生成的
PHP最开始的设计初衷就是将代码嵌入到HTML中,并且这个特性一直保持到现在,它对于开发者来说非常方便,比如常用在网页尾部显示ICP版权信息。请看如下代码:
<p class="footer-biz-name"> © <?php echo date('Y'); ?>21cto.com 版权所有</p>
配置好PHP运行环境的服务器端会识别<?php和?>这样标签之间的代码,解释完成后返回给客户端的浏览器。以上代码段会在浏览器输出如下 :
© 2025 21cto.com 版权所有
网页嵌入PHP后,在服务器端便有了动态特性。比如上面的代码会从元旦零时起调整,访问网站时会看到正确的年份,日期由服务器端计算,即使客户端时间设置不正确,也不会受影响。
虽然将代码嵌入到HTML很方便,但会有重复也比较容易出错,特别是使用复杂的代码后。因此,存储动态代码的常见做法是,将代码放在独立的文件中,然后用PHP调用不同的部件来构建页面,该页面中是PHP返回的结果或两者的结合。以面实例就是把尾部导航放在统一文件中,由PHP在每个页面包含进来,这样不论何时更改导航内容,只需编辑尾部文件,更改会自动反映在全部页面上。想像一下一个有数十页的网站,使用包含可以大量节约时间。
使用静态HTML网页的流程,先由开发者设计之后上传到服务器,当用户访问该网页时,Web服务器发送该HTML和相关资源,例如图片和CSS样式表。这个事务很简单:浏览器发出请求,服务器返回固定的内容。当使用PHP构建动态网页时多了一些细节,以下为详细过程(图1-7):
1) 浏览器向Web服务器发送请求;
2) 服务器将请求转给嵌入在服务器中的PHP解释器;
3) PHP解释器处理代码,查询MySQL数据库后构建页面;
4) 服务器端将构建完成的页面发送给浏览器。
图1-8 Web服务器与PHP动态响应用户请求周期
以上过程通常在毫秒级或更短时间完成,访问者并不会感到任何延迟。网站每个页面都经过单独构建,PHP根据用户输入进行响应,比如在用户登录或根据数据库搜索的结果动态显示不同的内容。
PHP是服务器端语言,其代码保存在服务器上,代码被请求触发经PHP引擎处理,交由服务器输出内容,通常是HTML页面,也可以是JSON或XML文档。
对于开发者,页面创建是完全自由,比如在页面放哪些内容从服务器端收集信息,如内部日期时间,哪些是处理客户端输入,表单提取,添加购物车等功能或业务逻辑。
1.1.3 脚本语言与编译型语言的区别
按编程语言类型划分,PHP隶属于脚本语言(Script Language)序列。Perl、Python和JavaScript等均隶属该品类,也就是说它们为同宗同祖。
脚本语言是使用C语言写的被称为解释器的虚拟指令集,它是一个混合系统,拥有独立的功能框架,参数传递的独立堆栈;字典分层的内存管理系统;并发管理系统。脚本语言解释器注册于本地操作系统函数的API,有属于自己的操作数与变量类型。
另一种语言类型是编译型,它需要经过联合编译,将源代码翻译成二进制机器码,之后运行在兼容的操作系统和硬件环境中。
对于代码的解析引擎,在编译语言中称为编译器,这和脚本语言的解释器相比都是相似的东西,区别就在于最后一步:编译器将语言输出二进制代码并保存,而解释器立即执行代码,它将程序分解为基本的语义指令,之后通过执行指令来完成相关任务。Java、C/C++等均为编译型语言。