摘要: 上篇文章讲述了变量的存储结构zval,今天我们就来学习一下几个常见变量类型的基本结构。 一、类型一览 zval中的u1.v.type用来存储变量的类型,而zval.value存储的是不同类型对应的值,所以type决定value取值的地方,以下是PHP7所定义的所有类型。 IS_UNDEF:标记未定义 阅读全文
posted @ 2018-09-18 13:18 平也 阅读(826) 评论(0) 推荐(1) 编辑
摘要: 进程的概念和与程序的区别 1、进程的定义 进程是允许某个并发执行的程序在某个数据集合上的运行过程。 进程是由正文段、用户数据段及进程控制块共同组成的执行环境。正文段存放被执行的机器指令,用户数据段存放进程在执行时直接进行操作的用户数据。进程控制块存放程序的运行环境,操作系统通过这些数据描述和管理进程 阅读全文
posted @ 2018-09-13 23:53 平也 阅读(7421) 评论(0) 推荐(5) 编辑
摘要: 记得网上流传甚广的段子“PHP是世界上最好的语言”,暂且不去讨论是否言过其实,但至少PHP确实有独特优势的,比如它的弱类型,即只需要$符号即可声明变量,使得PHP入手门槛极低,成为大家所青睐的Web服务端语言。那么它的变量是如何实现的呢?我们今天就来学习一下PHP的基本变量。 一、引言 PHP的变量 阅读全文
posted @ 2018-09-11 12:41 平也 阅读(783) 评论(0) 推荐(0) 编辑
摘要: 一、程序的顺序执行 在早期无操作系统及单道批处理系统时,程序都是按照顺序进行执行的。先进入内存的先执行,在执行的过程中不能执行其他的程序。程序中的指令也是按照顺序执行,一条指令正在执行时不能开始执行另一条指令。所以程序顺序执行有以下几个特点。 1.1、顺序性 处理机的操作,严格按照顺序执行,前一操作 阅读全文
posted @ 2018-09-09 21:22 平也 阅读(4544) 评论(1) 推荐(0) 编辑
摘要: 上篇文章讲述了模块初始化阶段之前的准备工作,本篇我来详细介绍PHP生命周期的五个阶段。 一、模块初始化阶段 我们先来看一下该阶段的每个函数的作用。 1.1、sapi_initialize_request_empty函数 这个函数主要为前面定义的SG宏中的成员变量进行初始化。 1.2、sapi_act 阅读全文
posted @ 2018-09-05 22:51 平也 阅读(1146) 评论(0) 推荐(0) 编辑
摘要: 上一章我们对PHP的源码目录结构有了初步了解,本章我们继续从生命周期的维度对PHP进行剖析。 一、概览 生命周期是什么呢?你可以把它看作执行过程,PHP的生命周期也就是它从开始执行到结束执行的过程。 PHP生命周期有五个阶段,分别为模块初始化阶段、请求初始化阶段、执行阶段、请求关闭阶段、模块关闭阶段 阅读全文
posted @ 2018-08-31 18:16 平也 阅读(1015) 评论(1) 推荐(2) 编辑
摘要: 上篇文章我们已经介绍了源码分析工具的安装、配置以及调试方法,本文我们来讲述一下PHP源码的目录结构。 一、目录概览 以 为例,看过源码的同学们应该发现源码目录多达十多个,下面是每个目录的说明。 目录 | 说明 | TSRM | 线程相关安全的实现 Zend | PHP解析器的核心实现 build | 阅读全文
posted @ 2018-08-30 00:49 平也 阅读(1421) 评论(0) 推荐(0) 编辑
摘要: 本文主要介绍分析源码的方式,其中包含环境的搭建、分析工具的安装以及源码调试的基本操作。 一、工具清单 PHP7.0.12 GDB CLion 二、源码下载及安装 三、GDB的安装与调试 3.1 安装 本文介绍两款调试工具,分别是GDB和CLion,前者为命令行调试工具,后者为图形界面调试工具,后者依 阅读全文
posted @ 2018-08-28 13:06 平也 阅读(5030) 评论(2) 推荐(2) 编辑
摘要: PHP1 1994年,一位名叫Rasmus lerdorf的兄台为了在网上展示自己的履历和网页流量的统计,用Perl开发了一套脚本,后来因与日俱增的需求无法得到满足,lerdorf便使用c语言进行了重写,重写后的程序支持数据库的访问,以及web应用程序的简单开发,备受好评,随后便以Personal 阅读全文
posted @ 2018-08-23 21:06 平也 阅读(916) 评论(0) 推荐(0) 编辑