
源码阅读:YAF框架系列文章(3) - (yaf_application.c)
这个文件主要围绕Yaf_Application类的注册,这里,按照倒叙的方式来进行讲解。一、注册yaf_application类YAF_STARTUP_FUNCTION(application) {
//定义一个zend_class_entry实例变量
zend_class_entry ce;
/* 初始化一个CLASS ENTRY
#define YAF_INIT_CLASS_...

高级编程:PHP扩展的 INI 配置文件操作
Extension INI Entries (扩展INI配置项)Defining php.ini directives (i.e., INI entries) in an extension is easy. Most of the work involves setting up the global struct explained earlier in Section 14.10.3 ...

源码阅读:YAF框架系列文章(2) - (yaf.c)
这个文件是yaf框架的整体组成框架文件,因为yaf的设计思路是模块化的,因此在这个文件中进行了总体整合。整合的思路分为以下几个部分。INI配置文件的解析注册系统使用的常量注册各个模块对扩展模块的各个生命期做拦截监控注册扩展模块一、INI配置文件解析功能在php_yaf.h文件中对于全局变量进行了定义工作,随后在yaf.c中进行了声明工作,声明操作 ZEND_DECLARE_MODULE_GL...

设计文档: PulseFLow PHP性能监控插件
一. 背景描述随着公司PHP项目体的不断增大,随着不同工程师的功能迭代,如何有效获取PHP项目的执行性能,对于系统整体模块显得异常重要,PulseFlow是一个公司团队内部自研地性能跟踪扩展,它可以在程序员无感知的情况下有效跟踪每一个函数的执行效率,主要分析CPU时间消耗、内存大小消耗,执行次数这三个指标,下面我们将从 PHP生命期 到 组件设计 到 性能优化这三个方面来进行阐述组件。二 ....

编程笔记:检测并分析PHP扩展的内存泄露
1. 背景描述基于C/C++开发的程序,内存管理是很大程度上的工作,我们在这篇文章里来给大家讲解一下如何监控程序体可能存在的内存泄露。工欲善其事必先利其器,这里选择使用 Valgrind 工作来进行内存监控。http://valgrind.org/2. Valgrind工具安装 git clone git://sourceware.org/git/valgrind.git
./auto...

开源项目:PulseFLow 性能跟踪扩展
背景描述随着公司PHP项目体的不断增大,随着不同工程师的功能迭代,如何有效获取PHP项目的执行性能,对于系统整体模块显得异常重要,PulseFlow是一个性能跟踪扩展,它可以在程序员无感知的情况下有效跟踪每一个函数的执行效率,主要分析CPU时间消耗、内存大小消耗,这个组件除了能够快速记录每个函数体的性能信息,还具备一系列的发送机制,主要包括共享内存队列(System V 和 Posix)、U...

源码阅读:PHP TSRM 线程安全管理器
TSRM 简介在查看php源代码或开发php扩展的时候,会出现大量 TSRMLS_ 宏字样在函数参数的位置,这些宏就是Zend为线程安全机制所提供的(Zend Thread Safety,简称ZTS)用于保证线程的安全 , 是防止多线程环境下以模块的形式加载并执行PHP解释器,导致内部一些公共资源读取错误,而提供的一种解决方法。什么时候需要用 TSRM只要服务器是多线程环境并且PHP以模块的...

PHP扩展开发2.2:线程安全
背景介绍线程安全是编程中的术语,指某个函数、函数库在多线程环境中被调用时,能够正确地处理多个线程之间的共享变量,使程序功能正确完成。一般来说,线程安全的函数应该为每个调用它的线程分配专门的空间,来储存需要单独保存的状态(如果需要的话),不依赖于“线程惯性”,把多个线程共享的变量正确对待(如,通知编译器该变量为“易失(volatile)”型,阻止其进行一些不恰当的优化),而且,线程安全的函数一...

PHP扩展开发2.1:PHP生命周期
1. PHP SAPI无论是Web模式、FastCgi模式、CLI模式,PHP的工作原理都是一样的,都是作为一种SAPI在运行(Server Application Programming Interface : the API sed by PHP to interface with Web Servers)。当我们在终端敲入php这个命令时候,它使用的是"”command lines a...

PHP扩展开发1:代码框架搭建
文章系列介绍本系列文章主要围绕PHP扩展开发,PHP扩展的重要性毋庸置疑,我们既可以编写PHP模块来帮助提升PHP日常的计算性能、丰富PHP的功能模块,也可以编写基于Zend引擎的扩展,做一些更加高级的PHP扩展开发,例如运行时监控、性能分析。篇1:扩展代码框架搭建对于PHP扩展的开发过程,第一步应该是如何搭建一个完善的代码框架,便于我们踏出第一步,好在PHP源代码中已经包含了一系列的工具,...