《PHP扩充及着力》

正文地址:http://www.cnblogs.com/aiweixiao/p/8202365.html

原文地址

欢迎关注微信公众号
 程序员的文娱情怀

一、紧要内容:

1️⃣php扩大的概念和底部实现

2️⃣编写一个php扩大的步调

3️⃣php底层,Zend 引擎API的介绍 ,HashTable 原理

二、相关概念

    1.【php扩展】


php的插件,也就是php的扩张,因为php的底层就是C语言。

php –m 或者 php –i 都足以查阅增加。

其实,xhproh, curl都是php的扩展。

 

 

C语言 1

php的恢宏图phpinfo()

 

2.【为何要有恢宏?】


1)【效用高】复杂的图像算法,需要写成PHP扩充

2)【操作底层,未协理的技术】1)PHP需要援助一项她还未帮忙的技能。这一般包括包裹一些现成的C函数库,以便提供PHP接口。
2)有些系统调用无法用PHP间接访问,需要编写成扩展,比如接纳Linux下的fork()函数创立一个进程。

3)【商业化,爱戴源码】想商业话一个采用,不过又不想透露源代码,就足以编写成扩张。

 

3.【PHP大旨组成?】


Zend引擎:1)核心、基础设备 2)PHP语法实现 3)脚本编译执行 4)扩大机制
5)内存管理

SAPI:服务器抽象层, 上层调用它

 

C语言 2

php主旨构成图

 

二、走向开发(编写增添)

 

 

C语言 3

全体步调

 

①下载PHP源码


要开销PHP扩张,第一步要下载PHP源代码,因为里面有付出扩张需要的工具。

下载地址:
wget http://cn2.php.net/get/php-5.5.38.tar.gz/from/this/mirror

 

②生成扩张组件框架 


ext_skel 命令

./ext_skel –extname=myext  会生成扩张基础文件夹及文件
php-5.5.38/ext/myext/

 

③改动配置文件


修改config.m4文件,去掉配置前的dnl

config.m4:  那是Unix环境下的Build
System配置文件,前面将会经过它生成配置和装置。

 

 

C语言 4

修改配置config.m4

 

④编纂主旨函数(可用默认的)


步骤如下(myext.c):

1、使用宏PHP_FE将函数参加到myext_functions中

2、使用宏PHP_FUNCTION定义函数体

 

 

C语言 5

扩展c文件myext.c

⑤编译增添+重启


1、调用phpize程序生成编译配置文件 cd myext && phpize

2、编译增添库 
./configure –with-php-config=/Data/apps/php/bin/php-config

3、make         

4、make  test

5、sudo make  install                                               
生成myext.so 文件    

6、 sudo vim /Data/apps/php/lib/php.ini  加上 extension=myext.so

7、 sudo /Data/apps/php/sbin/php-fpm reload

 

 

C语言 6

修改php配置文件,添加扩充

 

三、精通原理

 

 

C语言 7

php的生命周期

C语言, 

C语言 8

php的变量在基础–写时复制

 

C语言 9

php的变量在基本–底层代码相比     
                                     

 

C语言 10

php的变量在基础–结构体表示       
                                   

 

C语言 11

HashTable分析–结构体

 

C语言 12

HashTable分析–绘图表示

 

C语言 13

Zend引擎API

 

四、写在终极

   
php的基本是C语言,主题引擎是Zend,精晓HashTable就能通晓php的出色。php的恢弘开发说到底是C语言的编写,更见底层功力,希望大家都能成为技术大牛。

    最后,预祝我们二零一八年风调雨顺,心想事成!