简单解析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 相关文章推荐
dedecms中显示数字验证码的修改方法
Mar 21 PHP
PHP的单引号和双引号 字符串效率
May 27 PHP
ajax+php打造进度条 readyState各状态
Mar 20 PHP
PHP使用数组实现队列
Feb 05 PHP
用php实现选择排序的解决方法
May 04 PHP
php中unserialize返回false的解决方法
Sep 22 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
May 12 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 PHP
php版银联支付接口开发简明教程
Oct 14 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 PHP
Zend Framework动作控制器用法示例
Dec 09 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 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系统类函数
2015/10/21 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
js的对象与函数详解
2019/01/21 Javascript
JS实现li标签的删除
2019/04/12 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
vue点击页面空白处实现保存功能
2019/11/06 Javascript
vue使用nprogress加载路由进度条的方法
2020/06/04 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
JavaScript交换变量常用4种方法解析
2020/09/02 Javascript
Python控制多进程与多线程并发数总结
2016/10/26 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
上海方立数码笔试题
2013/10/18 面试题
Ruby如何实现动态方法调用
2012/11/18 面试题
化工工艺专业求职信
2013/09/22 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
二手房购房意向书
2015/05/09 职场文书
运动会新闻稿
2015/07/17 职场文书
导游词之五台山
2019/10/11 职场文书