分类 PHP 下的文章

PHP7扩展开发(四):拷贝与引用


引用计数

迄今为止,我们向HashTables中加入的zval要么是新建的,要么是刚拷贝的。它们都是独立的,只占用自己的资源且只存在于某个HashTable中。作为一个语言设计的概念,创建和拷贝变量的方法是“很好”的,但是习惯了C程序设计就会知道,通过避免拷贝大块的数据(除非绝对必须)来节约内存和CPU时间并不少见。考虑这段用户代码:

<?php
$a = file_get_contents('fourMegabyteLogFile.log');
$b = $a;
unset($a);


PHP7扩展开发(三):参数、数组和Zvals


起步

到这已经能声明简单函数,返回静态或者动态值了。定义INI选项,声明内部数值或全局数值。本章节将介绍如何接收从调用脚本(php文件)传入参数的数值,以及 PHP内核Zend引擎 如何操作内部变量。


PHP7扩展开发(二):配置项与全局数值


起步

Zend引擎提供了另种管理设置值(INI)的途径。现在弄个简单的,我们经常看到php.ini里有诸如 display_errors = On 这样的全局设置。假设我们需要为我们扩展定义一个值: hello.greeting 并用函数 hello_ini() 返回它的内容。

在php.ini:

[hello]
hello.greeting=1

为了避免命名空间的冲突,我们扩展的名字作为所有值的前缀。仅仅是一种约定,一个句点用来分隔扩展名和说明性的初始设定名字。


PHP7扩展开发(一):hello world


起步

最近在看 《PHP扩展开发中文教程》 的pdf版。PHP的解释器是用C语言写的,所以PHP扩展自然也是用C 语言了。

扩展是什么

用过php的人一定也用过php扩展。php本身带有86个扩展,扩展是对php语言功能的一个延伸,php的核心由两部分组成:最底层的 Zend引擎PHP内核 。ze把脚本解析成机器可读的符号,也会处理内存管理,变量作用域,程序调度。PHP内核则主要涉及主机环境(Apache,IIS,Nginx),处理与主机的通信。