服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - PHP教程 - 简单解析PHP程序的运行流程

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

2021-01-29 16:26catHeart PHP教程

PHP代码被PHP解释器解释后只可运行于服务器上的Web端,这里我们来简单解析PHP程序的运行流程,需要的朋友可以参考下

一直想了解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代码的。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<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执行上述代码,得到的输出如下。

?
1
2
3
4
5
6
7
8
9
10
11
<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代码。

?
1
2
3
4
5
6
7
<?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>"
?>

 

延伸 · 阅读

精彩推荐