[ PHP 内核与扩展开发系列] PHP 中的资源类型:持久资源

通常情况下,像资源这类复合类型的数据都会占用大量的硬件资源,比如内存、CPU以及网络带宽。对于使用频率超级高的数据库连接,我们可以获取一个长连接,使其不会在脚本结束后自动销毁,一旦创建便可以在各个请求中直接使用,从而减少每次创建它的消耗。MySQL 的长连接在 PHP 内核中其实就是一种持久资源。 内存分配 前面的章节里我们接触了 emalloc() 之类的以 e 开头的内存管理函数,通…

[ PHP 内核与扩展开发系列] PHP 中的资源类型:复合数据类型 —— 资源

截止到现在,我们已经熟悉了 PHP 语言中的字符串、数字、布尔以及数组等数据类型了,接下来,我们将接触另外一种 PHP 独特的数据类型——资源(Resource)。 讲述之前,先描述下资源类型在内核中的结构: typedef struct _zend_rsrc_list_entry { void *ptr; int type; int refcount; } zend_rsrc_list…

[ PHP 内核与扩展开发系列] 变量在内核中的实现 —— 变量类型

所有的编程语言都要提供一种数据的存储与检索机制,PHP 也不例外。其它语言大都需要在使用变量之前先定义,并且它的类型也是无法再次改变的(强类型静态语言,先声明,再使用,运行时无法改变类型),而 PHP 是弱类型动态语言,允许程序员自由使用变量而无需提前定义,甚至可以随时随意地将已存在的变量转换成其它任何 PHP 支持的数据类型。在程序运行的时候,PHP 还会自动根据需求转换变量的类型。 …