包括 Solaris,macOS,Oracle Linux 和 BSD 在內的很多操作系統 都提供了 DTrace 跟蹤調試框架,它永遠可用,并且額外消耗極低。 DTrace 可以跟蹤操作系統行為和用戶(hù)程序的執行情況。 它可以顯示參數值,也可以用來(lái)分析性能問(wèn)題。 用戶(hù)可以使用 DTrace D 腳本語(yǔ)言創(chuàng )建腳本文件來(lái)監控探針,進(jìn)而高效分析數據指針。
除非用戶(hù)使用 DTrace D 腳本激活并監控 PHP 探針,否則它并不會(huì )運行,所以不會(huì )給正常的應用執行帶來(lái)任何性能損耗。 即使 PHP 探針被激活,它的消耗也是非常低的,甚至可以直接在生產(chǎn)系統中使用。
在運行時(shí)可以激活 PHP “用戶(hù)級靜態(tài)定義跟蹤”(USDT)探針。
舉例說(shuō)明,如果 D 腳本正在監控 PHP function-entry
探針,
那么,每當 PHP 腳本函數被調用的時(shí)候,這個(gè)探針將被觸發(fā),同時(shí) D 腳本中所關(guān)聯(lián)的動(dòng)作代碼將被執行。
在腳本的動(dòng)作代碼中,可以打印出諸如函數所在源文件等信息的探針參數,
也可以記錄諸如函數執行次數這樣的聚合數據。
這里僅描述了 PHP USDT 探針。請參考各操作系統文檔中關(guān)于 DTrace 的部分獲取更多信息, 例如,如何使用 DTrace 跟蹤函數調用,如何跟蹤操作系統行為等。 需要注意的是,不同平臺提供的 DTrace 功能并不完全相同。
從 PHP 5.4 開(kāi)始加入 DTrace 靜態(tài)探針,之前的版本需要使用 ? PECL 擴展來(lái)實(shí)現跟蹤功能。這個(gè)擴展現在已經(jīng)廢棄。
在某些 Linux 發(fā)行版中,可以使用 SystemTap 工具來(lái)監控 PHP DTrace 靜態(tài)探針。