Tagged: 扩展开发

0

PHP扩展开发(五)哈希表和数组API

哈希表结构 哈希表操作API 哈希表创建 哈希表填充 哈希表查找 快速填充和查找 zval* 数组API 数组创建 数组填充 Zend Hash API是以zend_hash_*样式的函数定义,注意的是,这里的zend_hash_*并不是函数, 而是宏定义,对应的函数一般为_zend_hash_*,...

0

PHP扩展开发(七)Zend 线程安全

在PHP诞生的初期,它总是以单线程的CGI方式运行的,因此,根本不需要考虑多线程问题,因为进程的处理不会超过单个请求。 我们可以在内部的全局空间声明一个全局变量,并且可以随时访问或者修改该变量的值,而不用担心该变量是否是还没有定义。 在每个请求的CGI处理结束的时候,所有的资源都会被自动的释放。 后...

0

PHP扩展开发(六)PHP扩展生命周期

全局变量 声明扩展全局变量 访问扩展全局变量 Zend定义的全局变量访问宏 注册常量 为phpinfo提供扩展信息 全局变量 在单线程和多线程环境中,扩展内部全局变量的创建和使用方式是不同的。 声明扩展全局变量 要声明一个全局变量,首先需要在扩展的头文件中声明: ZEND_BEGIN_MODULE_...

0

Php扩展开发(一)构建第一个扩展

构建一个基本的扩展骨架 配置文件config.m4 编译扩展 首先需要确定系统中安装了gcc编译器,合适版本的bison等,下面是从源码编译安装PHP需要执行的基本命令: # cd php-src # ./buildconf # ./configure –enable-debug –enable...

0

Php扩展开发(二)创建第一个Php扩展函数

在PHP扩展中,创建一个函数主要需要经过三步: 在源文件(.c)中使用PHP_FUNCTION宏创建函数实现,并头文件中声明该函数 使用PHP_FE告诉zend_function_entry结构体新创建的函数的地址 将zend_function_entry结构体注册到zend_module_entr...

0

Php扩展开发(三)面向对象

本节将会通过实现一个简单的PHP扩展类,介绍在PHP扩展开发过程中如何实现面向对象。 在PHP扩展实现中,类的创建主要包含三步: 创建一个全局的zend_class_entry变量,用于存储类的入口。 创建一个zend_function_entry结构体数组,用于存储类中包含的方法。 在扩展的MIN...

0

Php扩展开发(四)Php扩展开发相关问题

如何在编译的时候检查出来是否时候用了线程安全兼容的编码方式? 常用的线程安全宏定义 如何从符号表中检索内容 内存管理 zval_dtor和 FREE_ZVAL的区别 配置开发环境 头文件 源文件 在*nix系统下构建扩展 加载扩展的两种方式 变量相关操作 php变量结构 常见的变量操作宏 如何获取变...

Scroll Up