[发明专利]一种PHP应用实时性能数据采集分析方法和系统在审

专利信息
申请号: 202010774335.4 申请日: 2020-08-05
公开(公告)号: CN112100021A 公开(公告)日: 2020-12-18
发明(设计)人: 高驰涛;李忠益;王鸿杰 申请(专利权)人: 云智慧(北京)科技有限公司
主分类号: G06F11/30 分类号: G06F11/30;G06F9/448;G06F9/455
代理公司: 暂无信息 代理人: 暂无信息
地址: 100080 北京市海淀*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 php 应用 实时 性能 数据 采集 分析 方法 系统
【权利要求书】:

1.一种PHP应用实时性能数据采集分析方法,其包括如下步骤:

S1、执行黑名单初始化过程;

S2、执行替换和挂载钩子的指针操作;

S3、初始化运行栈和函数字典,通过已经挂载的钩子获取函数名并记录函数的开始时间,通过函数名判断是否存在于黑名单中;

S4、在函数运行结束之后获取函数的参数并记录结束时间,判断是否存在于函数字典中;

S5、归还已经替换和挂载的钩子指针;

S6、销毁函数黑名单。

2.如权利要求1所述的PHP应用实时性能数据采集分析方法,其特征在于,步骤S1中,黑名单函数包括字符串String函数、数组Array函数、时间Data/Time函数、数学Math函数,较佳的,步骤S1中的黑名单函数算法使用Zend引擎内的HashTable完成,其中,较佳的,使用HashTable的zend_hash_init完成初始化、使用zend_hash_add_empty_element完成写入、使用zend_hash_exists完成存在检测。

3.如权利要求2所述的PHP应用实时性能数据采集分析方法,其特征在于,步骤S1的具体步骤包括:

步骤S11、首先将函数黑名单定义成字符串数组,在PHP全局变量初始化时,将该数组循环插入黑名单HashTable,并把该HashTable存储进PHP全局变量中;

步骤S12、在Execute过程中的zend_execute和zend_execute_internal钩子中获取函数名;

步骤S13、获取函数名后,依据函数名,使用zend_hash_exists方法从HashTable中进行快速查找是否存在,如果存在,则执行步骤S14,如果不存在,则执行步骤S15;

步骤S14、退出后续的所有数据采集工作;

步骤S15、继续执行后续数据采集工作。

4.如权利要求2所述的PHP应用实时性能数据采集分析方法,其特征在于,步骤S2中替换和挂载的钩子包括:

钩子zend_compile_file;

钩子zend_execute和zend_execute_internal;

异常钩子zend_throw_exception;和

错误钩子zend_error_cb;

较佳的,替换和挂载过程如下:

1)将clone_zend_compile_file函数指针指向zend_compile_file,将zend_compile_file指针指向agent_zend_compile_file,在agent_zend_compile_file方法中再调用clone_zend_compile_file,完成zend_compile_file的PHP编译扩展挂载;

2)将clone_zend_execute函数指针指向zend_execute,将zend_execute指针指向agent_zend_execute指针,在agent_zend_execute方法中再调用clone_zend_execute,完成zend_execute的PHP用户函数运行扩展挂载;

3)将clone_zend_execute_internal函数指针指向zend_execute_internal,将zend_execute_internal指针指向agent_zend_execute_internal,在agent_zend_execute_internal方法中再调用clone_zend_execute_internal,完成zend_execute_internal的PHP内置函数运行扩展挂载;

4)将clone_zend_throw_exception函数指针指向zend_throw_exception,将zend_throw_exception指针指向agent_zend_throw_exception,在agent_zend_throw_exception方法中再调用clone_zend_throw_exception,完成zend_throw_exception的异常钩子扩展挂载;

5)将clone_zend_error_cb函数指针指向zend_error_cb,将zend_error_cb指针指向agent_zend_error_cb,在agent_zend_error_cb方法中再调用clone_zend_error_cb,完成zend_error_cb的错误钩子扩展挂载;

较佳的,归还过程如下:

1)将zend_compile_file函数指针指向clone_zend_compile_file,完成zend_compile_file的PHP编译钩子归还;

2)将zend_execute函数指针指向clone_zend_execute,完成zend_execute的PHP用户函数运行扩展钩子归还;

3)将zend_execute_internal函数指针指向clone_zend_execute_internal,完成zend_execute_internal的PHP内置函数运行扩展钩子归还;

4)将zend_throw_exception指针指向clone_zend_throw_exception,完成zend_throw_exception的异常钩子归还;

5)将zend_error_cb指针指向clone_zend_error_cb,完成zend_error_cb的错误钩子归还。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于云智慧(北京)科技有限公司,未经云智慧(北京)科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202010774335.4/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top