一条SQL查询语句如何执行、URL在浏览器执行过程、一段代码执行流程(PHP为例)

456 阅读2分钟

在看一条SQL语句查询如何执行,突然想到一段url输入到浏览器后,到返回数据经历了哪些过程。想做一个对比,加深印象。

流程

SQL语句查询流程

image.png

URL执行流程
  1. 浏览器发起请求
  2. DNS解析
  3. 建立链接(TPC三次握手,TLS 四次握手-HTTPS加密)
  4. 发送HTTP请求
  5. 维持HTTP链接
  6. 断开链接 (TCP四次挥手)
  7. 浏览器解析返回内容
PHP执行流程
  1. 语法分析 Scanning(类型),将PHP代码转换成语言片段(Tokens)。PHP 是基于re2c语法分析依据表作为语法分析的。在PHP源码文件夹中可以看到 zend/zend_language_scanner.1 这个规则文件。
  2. 语法分析 Parsing,将Tokens转换成简单有意义的表达式。Bison是一种通用目的的分析器和生成器。他将LARA(1)上下无关文法的描述转换成分析该文法的C语言程序。使用它可以生成解释器、编译器、协议实现等等。
  3. 编译 Complilation,将表达式编译成 opcodes
  4. 执行 Execution,zende 顺序执行 opcodes,每条一次,从而实现php脚本的功能。
代码的执行流程
  1. 可执行文件,存储在磁盘上
  2. 执行时,将可执行文件加载到内存
  3. CPU读取内存中需要操作数据
  4. CPU运算好的数据存在寄存器中
代码在内存中存取分为几个区?
  1. 代码区-存放二进制代码。
  2. 数据区-全局变量、静态变量、常量等。
  3. 栈区-运行的方法的形参、局部变量、返回值、以及递归栈锁需要的空间。系统自动分配和回收。
  4. 堆区-动态开辟的空间,存放new出来的对象在栈区中的真实数据需要手动回收。

基础知识要扎实,思考才会飞起来。 文章来源:

1.浏览器输入 URL 后发生了什么?

2.PHP执行流程回顾

3.PHP运行原理和机制

4.程序是如何运行的?

5.刷了这么多题,你了解自己代码的内存消耗么??