穷则独善其身,达则兼济天下

工匠之心,技术狂热追求者,开源社区爱好者,一个记录成长的站点。

标签 PHP扩展 下的文章

November 22, 2018

源码阅读:YAF框架系列文章(2) - (yaf.c)

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

设计文档: PulseFLow PHP性能监控插件

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

编程笔记:检测并分析PHP扩展的内存泄露

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

开源项目:PulseFLow 性能跟踪扩展

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

源码阅读: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...
July 5, 2018

PHP扩展开发1:代码框架搭建

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