简单解析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 相关文章推荐
php出现Cannot modify header information问题的解决方法大全
Apr 09 PHP
php下通过POST还是GET来传值
Jun 05 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
Feb 10 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
php 目录遍历、删除 函数的使用介绍
Apr 28 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
PHP PDO操作MySQL基础教程
Jun 05 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 PHP
php将xml转化对象的实例详解
Nov 17 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
php preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
jquery map方法使用示例
2014/04/23 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
2015/03/20 Javascript
Bootstrap基础学习
2015/06/16 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
2016/03/31 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
解决vue-loader加载不上的问题
2020/10/21 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
django认证系统实现自定义权限管理的方法
2018/07/16 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
Python使用进程Process模块管理资源
2020/03/05 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
零基础小白多久能学会python
2020/06/22 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
shell程序中如何注释
2012/01/28 面试题
汽车专业毕业生自荐信
2013/11/03 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
万能检讨书2000字
2014/10/17 职场文书
离婚协议书范本2014
2014/10/27 职场文书
教师节联欢会主持词
2015/07/04 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技