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

作者:catHeart 时间:2023-06-22 07:35:41 

一直想了解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,运行
0
投稿

猜你喜欢

  • 深入了解Golang官方container/heap用法

    2024-05-13 10:44:42
  • 基于torch.where和布尔索引的速度比较

    2021-10-07 16:20:54
  • [ASP]利用 xmlhttp 分块上传文件

    2008-07-04 14:14:00
  • Python3日期与时间戳转换的几种方法详解

    2021-03-10 03:57:17
  • Pycharm配置Anaconda环境的详细图文教程

    2021-10-30 00:57:23
  • 如何解决MySQL5升级为MySQL8遇到的问题my.ini

    2024-01-27 20:10:35
  • 关于超级链接的一些问题

    2007-12-07 14:00:00
  • Python socket实现多对多全双工通信的方法

    2023-05-02 17:31:38
  • Go 微服务开发框架DMicro设计思路详解

    2024-05-22 17:48:31
  • Python利用Matplotlib库实现绘制饼形图

    2021-08-13 11:08:51
  • python2.7实现FTP文件下载功能

    2021-10-09 19:04:37
  • Scrapy爬虫文件批量运行的实现

    2022-04-25 18:29:57
  • 定时备份 Mysql并上传到七牛的方法

    2024-01-25 14:11:13
  • 浏览器tab的设计

    2008-08-11 13:03:00
  • js图片随机显示技巧

    2007-08-19 20:20:00
  • Python3操作SQL Server数据库(实例讲解)

    2024-01-24 04:13:21
  • Django项目中动态设置静态文件路径的全过程

    2021-07-12 00:52:24
  • js鼠标动画特效

    2007-09-26 18:31:00
  • Python多线程以及多线程中join()的使用方法示例

    2021-02-07 16:25:03
  • Vue之使用mockjs生成模拟数据案例详解

    2024-05-29 22:24:40
  • asp之家 网络编程 m.aspxhome.com