简单解析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中数据的批量导入(csv文件)
Oct 09 PHP
php字符串截取问题
Nov 28 PHP
生成php程序的php代码
Apr 07 PHP
php 图片上传类代码
Jul 17 PHP
PHP获取网址的顶级域名函数代码
Sep 24 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
Jun 13 PHP
详解php的socket通信
Aug 11 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
php-fpm开启状态统计的方法详解
Jun 23 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
laradock环境docker-compose操作详解
Jul 29 PHP
在laravel5.2中实现点击用户头像更改头像的方法
Oct 14 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/11/09 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
javascript轮播图算法
2016/10/21 Javascript
面试常见的js算法题
2017/03/23 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
javascript实现前端成语点击验证
2020/06/24 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
django实现类似触发器的功能
2019/11/15 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
python中pickle模块浅析
2020/12/29 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
交通事故私了协议书
2014/04/16 职场文书
《画风》教学反思
2014/04/16 职场文书
保护环境建议书300字
2014/05/13 职场文书
政府个人对照检查材料
2014/08/28 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
青年文明号申报材料
2014/12/23 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
Golang map映射的用法
2022/04/22 Golang