作用
調(diào)試 eg: xdebug, zend debug
性能分析 xhprof
鏈路監(jiān)控 apm, molten, skywalking-php-sdk
實現(xiàn)方式
總的來講有兩種實現(xiàn)方式
添加代理,對每個函數(shù)的執(zhí)行增加代理,在代理中針對性的增加記錄。
在模塊注冊過程中修改CG(function_table) 或 CG(class_table)。
添加代理的方式
不同場景下對數(shù)據(jù)的收集詳細程度不同,例如調(diào)試和性能分析時需要運行相關的所有數(shù)據(jù),而在鏈路監(jiān)控中只需要針對性的進行處理即可,在molten中即通過設置需要代理的名單來進行針對性的監(jiān)控。
綜上可以看出通過代理的方式優(yōu)點是可以很方便的針對用戶定義的函數(shù)/類進行監(jiān)控,但是性能損耗也會受到框架及業(yè)務邏輯復雜度的影響。
修改Hash表的方式
在模塊注冊過程中修改Hash表相比于代理來說性能損耗很小,損耗大小主要取決于探針邏輯及增加的鉤子的多少(探針邏輯越復雜,鉤子執(zhí)行的越多性能損耗也就越高)
以下代碼為Molten中的實現(xiàn)方式。
針對內(nèi)置函數(shù)也可以使用修改handler的方式來處理,如下為opcache中覆蓋內(nèi)置文件相關函數(shù)的方法,相比上面的直接替換的方式更簡單易懂,skywalking-php-sdk中使用的即是這種方式。
上海盛霞光電科技有限公司做為一家專業(yè)的高端儀器儀表供應商,自身在德國漢諾威設有采購中心,針對進口備品特別是歐美產(chǎn)品有著獨到的理解和優(yōu)勢,經(jīng)過幾年的技術及人員累積,目前上海盛霞光電科技有限公司可以針對產(chǎn)品提供完善的備件,針對產(chǎn)品系列問題可以提供一條龍服務,大大縮短了客戶維修等待的時間,歡迎廣大用戶前來咨詢交流
24小時服務
一對一服務
COPYRIGHT ? 上海盛霞光電科技有限公司 ALL RIGHTS RESERVED. 技術支持:明圖網(wǎng)絡 XML地圖