資料介紹
軟件簡介
Deliverer 是一個 PHP 項目調(diào)度追蹤工具,主要用于線上故障排查。
使用場景
- 如果你有一些老的 PHP (PHP5 和 PHP7)項目,對線上一個項目運行邏輯不熟悉;
- 或者你對某個方法的調(diào)用來源不清楚;
- 又或者線上有一個接口不知道是哪里異常退出了;
- 還有線上調(diào)用特別耗時,都比較適合使用 Deliverer 來解決,幫助你避免跑路。
使用方法
-
可以根據(jù)
函數(shù)名
、類名
、方法名
、路由
來過濾輸出 - 可以在查詢到指定過濾內(nèi)容 n 次之后退出
- 可以根據(jù) request id 回放細看整個完整的調(diào)用鏈
- 過濾的內(nèi)容會高亮顯示
- 調(diào)用棧比較深的可以指定 -l 來隱藏深度調(diào)用的展示
原理
其實比較簡單,分兩步,第一步收集日志,第二步分析日志。
第一步
在PHP_MINIT
階段,通過zend_set_user_opcode_handler
?來設(shè)置對?ZEND_DO_UCALL
?、ZEND_DO_FCALL_BY_NAME
、ZEND_DO_FCALL
?三類?opcode
?的處理分析。
注意其中會涵蓋一些內(nèi)置函數(shù)和方法的調(diào)用,我們可以通過類型進行過濾。
然后在PHP_RINIT
階段新建日志文件,寫入請求的信息
pid-ts sapi http_method http_url
請求過程中在自定義的 handler 里面打印調(diào)用棧信息
最后在PHP_RSHUTDOWN
關(guān)閉日志文件的寫入
第二步
對收集好的日志,利用bin/deliverer
進行分析和整理,這塊是 php 腳本,就不贅述了。
安裝使用
下載
$ sudo wget http://github.com/zhoumengkang/deliverer/archive/refs/tags/1.0.4.zip
$ unzip 1.0.4.zip
$ rm -f 1.0.4.zip
$ cd deliverer-1.0.4/extension
編譯
$ whereis phpize
phpize: /usr/bin/phpize /usr/share/man/man1/phpize.1.gz
# 如果前面的路徑(/usr/bin)在環(huán)境變量里,也可以簡寫為 phpize,如果不太懂,直接復(fù)制執(zhí)行
$ /usr/bin/phpize
$ whereis php-config
php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz
$ ./configure --with-php-config=/usr/bin/php-config
$ make && sudo make install
配置 php.ini
$ php -i|grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
# 編輯 /etc/php.ini 文件
$ sudo vim /etc/php.ini
# 文件末尾增加以下兩行
[deliverer]
extension=deliverer.so
重啟 php-fpm
sudo service php-fpm restart
使用分析工具
可以移動./bin/deliverer
到你覺得合適的目錄,假如在當前目錄
# 回到文件的解壓目錄,開啟監(jiān)聽
$ cd ..
$ ./bin/deliverer -t
用一段我自己很久之前的祖?zhèn)鞔a(我的博客)來跑下
$ ./bin/deliverer -t
這樣會一直監(jiān)控所有的 php 進程的執(zhí)行
$ ./bin/deliverer -tAction::initUser -n3 -l5
參數(shù) | 值 | 解釋 |
---|---|---|
-t | Action::initUser | 過濾包含該調(diào)用的請求 |
-n | 3 | 統(tǒng)計三次然后退出 |
-l | 5 | 函數(shù)(方法)調(diào)用深度顯示,最多顯示 5 層,超出部分在末尾標出 |
$ ./bin/deliverer -v7979-1624369150991941
通過?-v
?requestId
?來詳細查看完整調(diào)用棧
$ ./bin/deliverer -tSqlExecute::getAll -n1 -l3
當要查詢方法,函數(shù)調(diào)用棧過深,不在層級查詢范圍之內(nèi),則其外層調(diào)用顯示紅色
- 大象的運動追蹤開源項目
- PHP教程:foreach使用引用注意的問題
- 人體行為識別API接口aip-php-sdk-4.15.4 3次下載
- 菠菜產(chǎn)品項目搭建優(yōu)化工具資源下載 0次下載
- PHP學(xué)習教程分享 7次下載
- 如何使用PHP-X快速開發(fā)一個PHP擴展 8次下載
- 如何利用基于字節(jié)碼插樁實現(xiàn)的多線程調(diào)試工具 13次下載
- 學(xué)習PHP需要注意那幾點 8次下載
- smarty如何調(diào)用PHP常量 3次下載
- 如何使用PHP-X快速開發(fā)一個PHP擴展 9次下載
- PHP基礎(chǔ)知識的詳細資料總結(jié) 7次下載
- PHP多個版本的比較資料說明 0次下載
- PHP正則表達式 0次下載
- 高性能PHP應(yīng)用開發(fā) 2次下載
- PHP/MySQL教程 0次下載
- phpy:PHP與Python互調(diào)用庫 1042次閱讀
- 通達OA漏洞檢測工具介紹 4094次閱讀
- PHP中的生成器 879次閱讀
- 如何在Ubuntu 20.04安裝PHP 8.1并將其與Nginx集成 3511次閱讀
- 聊聊PHP的web應(yīng)用程序開發(fā)框架存在的漏洞有哪些 1834次閱讀
- php是什么語言編寫的 5024次閱讀
- 一文知道PHP的優(yōu)點和缺點 7023次閱讀
- 為什么PHP的開發(fā)效率比java高但是java比PHP流行 1w次閱讀
- PHP與Python對比 如何選擇? 4548次閱讀
- 光線追蹤算法匯總 1.7w次閱讀
- php開發(fā)中遇到的難點有哪些_十大php開發(fā)常見問題盤點 1.8w次閱讀
- DevOps工具鏈的項目端到端應(yīng)用實踐過程 7236次閱讀
- php開發(fā)環(huán)境的搭建和使用 3474次閱讀
- php實現(xiàn)定時器任務(wù)方法詳解 1435次閱讀
- PHP實現(xiàn)定時任務(wù)的幾種方法詳解 7162次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費
- 4網(wǎng)絡(luò)安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護等級說明
- 0.08 MB | 次下載 | 免費
本月
- 1貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論