189-6435-2848

咨询热线:021-3219 0091、189-6435-2848

公司地址:上海市曹安路2038号华拓大厦502室

联系邮箱:company@sx-company.com

189-6435-2848

新闻中心

news

上海盛霞为您介绍探针实现原理分析

盛霞光电 2020-03-03 0 2210 次

上海盛霞为您介绍探针实现原理分析



作用
调试 eg: xdebug, zend debug

性能分析 xhprof

链路监控 apm, molten, skywalking-php-sdk

实现方式
总的来讲有两种实现方式

添加代理,对每个函数的执行增加代理,在代理中针对性的增加记录。

在模块注册过程中修改CG(function_table) 或 CG(class_table)。

添加代理的方式

   

       不同场景下对数据的收集详细程度不同,例如调试和性能分析时需要运行相关的所有数据,而在链路监控中只需要针对性的进行处理即可,在molten中即通过设置需要代理的名单来进行针对性的监控。

  综上可以看出通过代理的方式优点是可以很方便的针对用户定义的函数/类进行监控,但是性能损耗也会受到框架及业务逻辑复杂度的影响。

修改Hash表的方式
        在模块注册过程中修改Hash表相比于代理来说性能损耗很小,损耗大小主要取决于探针逻辑及增加的钩子的多少(探针逻辑越复杂,钩子执行的越多性能损耗也就越高)

以下代码为Molten中的实现方式。

    针对内置函数也可以使用修改handler的方式来处理,如下为opcache中覆盖内置文件相关函数的方法,相比上面的直接替换的方式更简单易懂,skywalking-php-sdk中使用的即是这种方式。


上海盛霞光电科技有限公司做为一家专业的高端仪器仪表供应商,自身在德国汉诺威设有采购中心,针对进口备品特别是欧美产品有着独到的理解和优势,经过几年的技术及人员累积,目前上海盛霞光电科技有限公司可以针对产品提供完善的备件,针对产品系列问题可以提供一条龙服务,大大缩短了客户维修等待的时间,欢迎广大用户前来咨询交流

www.sxmeter.com
021-3219 0091

189-6435-2848

上海市曹安路2038号华拓大厦502室

售后服务

  • 24小时服务

  • 产品咨询

  • 一对一服务

  • 咨询电话

    021-3219 0091

    189-6435-2848

    上海市曹安路2038号华拓大厦502室

    company@sx-company.com

    在线留言
    如您有任何需求或疑问,请填写下列表单,我们将在1个工作日内给予反馈!