简单解析PHP程序的运行流程


Posted in PHP onJune 23, 2016

一直想了解Web编程的技术。PHP是进行Web编程重要的一种语言,书上总是说,PHP是用于服务器端的编程语言。但是,实在不能理解它是怎么用于服务器端编程,如何被运行。也看过一些PHP的教程,大多是介绍语法,却没有给出前面的问题解答。最近东拼西凑的看了一些东西,终于对PHP如何运行有了一些了解。

HTTP协议与PHP脚本的触发
HTTP是一种基于Request/Response的协议,是支持Web运行的协议基础。HTTP的客户端发送Request
到服务器端,服务器端返回Response。Request中包含客户端需要访问的页面的文件名。服务器端返回该文件名指向的网页。如果没有使用PHP、JavaScript等,HTTP协议传输只能是静态的HTML文件。也就是,HTML文件不会受到用户行为的影响,内容一直保持不变。

简单解析PHP程序的运行流程

如果要实现动态网页,就需要使用PHP或JavaScript。PHP是用于服务器端的编程语言,JavaScript是多用于客户端的编程语言。

PHP代码是在服务器端被执行的。用户访问一个包含PHP代码的网页时,发送Request到服务器,其中包含网页的文件名。服务器收到Request后,找到文件名指向的文件,发现其中嵌有PHP代码,会调用PHP解释器处理该文件,然后将处理后的结果整理到Response,发送到客户端。PHP代码可以与服务器端的数据库或其他资源进行交互,或者根据用户的操作产生不同的页面。

因此,PHP脚本的触发是在服务器收到客户端的Request。收到一个Request后,服务器触发一个PHP脚本;处理完脚本后,返回结果到客户端,等待下一个Request。当收到下一个Request后,服务器触发另一个(或同一个)PHP脚本。两次PHP脚本的运行是相互独立的,第二次脚本的运行几乎不受前一次脚本运行的影响。

JavaScript代码一般是在客户端被执行的,即被浏览器所处理。客户端从服务器端获取的是JavaScript代码,而不是代码被执行后的结果,然后调用解释器执行该代码。

PHP的代码块
PHP代码是可以嵌入到HTML文件中的,经常可以在HTML文件中看到散落在各处的PHP代码块。我也一直困惑在同一个HMTL文件中,不同的PHP代码块之间是怎样的关系。原来PHP是会忽略两个PHP代码块之间HTML代码的。

<head>
  <title>Test PHP Multiple Blocks</title>
</head>
<body>
  <p>This is HTML code.</p>

  <?php
    $var = 1;
    echo "<p>This is PHP code block 1. <br/> \$var=$var </p>";
  ?>

  <p>This is HTML code too.</p>

  <?php
    $var += 1;
    echo "<p>This is PHP code block 2. <br/> \$var=$var</p>" 
  ?>

</body>

代码中有两个PHP代码块,它们被HTML代码隔开了。第1个PHP代码块声明了1个变量$var;第2个代码块引用$var,进行改变了它的值。用PHP执行上述代码,得到的输出如下。

<head>
  <title>Test PHP Multiple Blocks</title>
</head>
<body>
  <p>This is HTML code.</p>

  <p>This is PHP code block 1. <br/> $var=1 </p>
  <p>This is HTML code too.</p>

  <p>This is PHP code block 2. <br/> $var=2</p>
</body>

第2个代码块是可以引用$var的。虽然被HTML代码隔开了,但是两段代码的执行完全忽略了HTML部分。PHP的输出与下面没有被HTML隔开的PHP代码是一样的,前者只是在PHP输出结果之间插入了相应的HTML代码。

<?php
    $var = 1;
    echo "<p>This is PHP code block 1. <br/> \$var=$var </p>";

    $var += 1;
    echo "<p>This is PHP code block 2. <br/> \$var=$var</p>" 
  ?>
PHP 相关文章推荐
第1次亲密接触PHP5(2)
Oct 09 PHP
PHP下几种删除目录的方法总结
Aug 19 PHP
php5 mysql分页实例代码
Apr 10 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
Jul 03 PHP
页面乱码问题的根源及其分析
Aug 09 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
php mb_substr()函数截取中文字符串应用示例
Jul 29 PHP
php使用function_exists判断函数可用的方法
Nov 19 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
PHP Class SoapClient not found解决方法
Jan 20 PHP
PHP微信开发之查询微信精选文章
Jun 23 #PHP
PHP微信开发之查询城市天气
Jun 23 #PHP
PHP微信开发之有道翻译
Jun 23 #PHP
PHP微信开发之文本自动回复
Jun 23 #PHP
php微信高级接口群发 多客服
Jun 23 #PHP
php英文单词统计器
Jun 23 #PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 #PHP
You might like
如何开发一个虚拟域名系统
2006/10/09 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
js继承的实现代码
2010/08/05 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
Windows下为Python安装Matplotlib模块
2015/11/06 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
Mac安装python3的方法步骤
2019/08/09 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
英语专业毕业个人求职自荐信
2013/09/21 职场文书
师范生个人推荐信
2013/11/29 职场文书
大学生演讲稿范文
2014/01/11 职场文书
作文评语集锦大全
2014/04/23 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
感恩父母主题班会
2015/08/12 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技