php运行原理如何理解
来源:互联网 发布:淘宝助理在哪下载安装 编辑:程序博客网 时间:2024/06/14 17:20
https://segmentfault.com/q/1010000005097151
<head> <title>PHP 测试</title> </head> <body> <?php echo '<p>Hello World</p>'; ?> </body></html>
这个是一段简单的php代码,文件是hello.php,我通过www.xxx.com/hello.php请求这个页面的时候,php是如何解析数据返回给服务器,返回给我的,这个过程是怎么样的。我的理解是当我访问这个文件的时候服务器找到了这个php脚本,然后调用php的脚本解析器解析里边的php代码,那么echo的意思是直接返回了数据么,返回数据只能使用echo么,服务器整合了html和php返回的数据然后发送给客户端,这个页面是我直接访问的,如果这个页面依赖于其他的全局的变量,要怎么办。其他的语言都有一个初始化的东西,初始化整个应用程序,那php就直接运行某一个指定的脚本么,没有初始化这一说么。
这样吧,你先别管web,直接在你hello.php的文件夹运行命令php hello.php
<html> <head> <title>PHP 测试</title> </head> <body> <p>Hello World</p> </body></html>
这就是php解释器执行你的hello.php的结果,没错,现在跟web还没有半毛钱关系。php程序对hello.php做了些什么事情呢:
1、打开hello.php文件;
2、从上到下扫描hello.php文件内容;
3、如果找到
<?php code ?>
则按照php的语法执行code,一般的逻辑代码直接执行,但如code里面有输出语句(比如echo print_r等等),则将结果输出;4、如果字符串不在
<?php ?>
里面,那么php程序就不认识这些字符串,无法处理,直接把它们输出就行。
php解释器能做的就这么几件事情,你在上面看到的输出也就这个过程得到的。
那么 ,现在来说是php和web。
你浏览器打开http://www.xx.com/hello.php,这个请求被你的web服务程序(nginx、apache……)收到,它(web服务程序)根据你的配置知道这个请求应该是给php解释器来执行的(而像css、js、图片等静态文件的话是不用给php解释器解释了,web服务程序直接处理就ok),它再根据你的配置得到这个网站的根目录在那里,就知道这个请求应该对应到你的哪个hello.php文件上去,继而它将相关的请求信息(HTTP请求头等)设置到环境变量里面,然后通知php解释器去解释hello.php,php解释器就像一开始那样去解释hello.php,并输出(1),web服务程序再把php解释器的输出返回给浏览器(当然会加一些额外的信息,比如HTTP头)。
简单讲就是,web服务程序告诉php该执行那个文件,然后把php的执行结果返回给浏览器。整体上就这样一个过程,但是配置成cgi、fastcgi、php-fpm在web服务程序和php解释器之间的交互上有些差异。这整个过程在任意的web上都是类似的,尤其是脚本类的语言,无外乎换了个解释器或者是web服务程序和解释器之间的通信方式。
- php运行原理如何理解
- 理解PHP网页运行原理
- 理解JVM运行原理
- PHP的运行原理
- PHP的运行原理
- PHP的运行原理
- php的运行原理
- Apache 运行PHP原理
- PHP运行底层原理
- php运行原理
- php运行原理
- PHP运行原理
- Nginx + PHP 运行原理
- php底层运行原理
- php网页运行原理
- Apache运行PHP原理
- 理解PHP字符串原理
- 理解php赋值原理
- ES2016 & ES2017
- 第四届“图灵杯”NEUQ-ACM程序设计竞赛(团队赛)-网络同步赛D 分形
- Linux下C高手成长过程----经典书籍推荐
- angualrjs 学习笔记初篇
- c++ 学习笔记之复合数据类型
- php运行原理如何理解
- c++ 学习笔记初篇
- c++ 学习笔记之程序结构
- c++ 学习笔记之语言基础
- Redis适用场合
- 设计模式理论基础
- Python中3+版本运行2+版本程序出现TypeError: a bytes-like object is required, not 'str'之读取PDF中的图片
- 在调用别人的webservice时候,需要生成客户端调用。调用时出现javax.xml.ws.WebServiceException: Unable to create JAXBContext 这个问
- 归并排序