資料介紹
軟件簡(jiǎn)介
Deliverer 是一個(gè) PHP 項(xiàng)目調(diào)度追蹤工具,主要用于線上故障排查。
使用場(chǎng)景
- 如果你有一些老的 PHP (PHP5 和 PHP7)項(xiàng)目,對(duì)線上一個(gè)項(xiàng)目運(yùn)行邏輯不熟悉;
- 或者你對(duì)某個(gè)方法的調(diào)用來源不清楚;
- 又或者線上有一個(gè)接口不知道是哪里異常退出了;
- 還有線上調(diào)用特別耗時(shí),都比較適合使用 Deliverer 來解決,幫助你避免跑路。
使用方法
-
可以根據(jù)
函數(shù)名
、類名
、方法名
、路由
來過濾輸出 - 可以在查詢到指定過濾內(nèi)容 n 次之后退出
- 可以根據(jù) request id 回放細(xì)看整個(gè)完整的調(diào)用鏈
- 過濾的內(nèi)容會(huì)高亮顯示
- 調(diào)用棧比較深的可以指定 -l 來隱藏深度調(diào)用的展示
原理
其實(shí)比較簡(jiǎn)單,分兩步,第一步收集日志,第二步分析日志。
第一步
在PHP_MINIT
階段,通過zend_set_user_opcode_handler
?來設(shè)置對(duì)?ZEND_DO_UCALL
?、ZEND_DO_FCALL_BY_NAME
、ZEND_DO_FCALL
?三類?opcode
?的處理分析。
注意其中會(huì)涵蓋一些內(nèi)置函數(shù)和方法的調(diào)用,我們可以通過類型進(jìn)行過濾。
然后在PHP_RINIT
階段新建日志文件,寫入請(qǐng)求的信息
pid-ts sapi http_method http_url
請(qǐng)求過程中在自定義的 handler 里面打印調(diào)用棧信息
最后在PHP_RSHUTDOWN
關(guān)閉日志文件的寫入
第二步
對(duì)收集好的日志,利用bin/deliverer
進(jìn)行分析和整理,這塊是 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)境變量里,也可以簡(jiǎ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
使用分析工具
可以移動(dòng)./bin/deliverer
到你覺得合適的目錄,假如在當(dāng)前目錄
# 回到文件的解壓目錄,開啟監(jiān)聽
$ cd ..
$ ./bin/deliverer -t
用一段我自己很久之前的祖?zhèn)鞔a(我的博客)來跑下
$ ./bin/deliverer -t
這樣會(huì)一直監(jiān)控所有的 php 進(jìn)程的執(zhí)行
$ ./bin/deliverer -tAction::initUser -n3 -l5
參數(shù) | 值 | 解釋 |
---|---|---|
-t | Action::initUser | 過濾包含該調(diào)用的請(qǐng)求 |
-n | 3 | 統(tǒng)計(jì)三次然后退出 |
-l | 5 | 函數(shù)(方法)調(diào)用深度顯示,最多顯示 5 層,超出部分在末尾標(biāo)出 |
$ ./bin/deliverer -v7979-1624369150991941
通過?-v
?requestId
?來詳細(xì)查看完整調(diào)用棧
$ ./bin/deliverer -tSqlExecute::getAll -n1 -l3
當(dāng)要查詢方法,函數(shù)調(diào)用棧過深,不在層級(jí)查詢范圍之內(nèi),則其外層調(diào)用顯示紅色
- 大象的運(yùn)動(dòng)追蹤開源項(xiàng)目
- PHP教程:foreach使用引用注意的問題
- 人體行為識(shí)別API接口aip-php-sdk-4.15.4 3次下載
- 菠菜產(chǎn)品項(xiàng)目搭建優(yōu)化工具資源下載 0次下載
- PHP學(xué)習(xí)教程分享 7次下載
- 如何使用PHP-X快速開發(fā)一個(gè)PHP擴(kuò)展 8次下載
- 如何利用基于字節(jié)碼插樁實(shí)現(xiàn)的多線程調(diào)試工具 13次下載
- 學(xué)習(xí)PHP需要注意那幾點(diǎn) 8次下載
- smarty如何調(diào)用PHP常量 3次下載
- 如何使用PHP-X快速開發(fā)一個(gè)PHP擴(kuò)展 9次下載
- PHP基礎(chǔ)知識(shí)的詳細(xì)資料總結(jié) 7次下載
- PHP多個(gè)版本的比較資料說明 0次下載
- PHP正則表達(dá)式 0次下載
- 高性能PHP應(yīng)用開發(fā) 2次下載
- PHP/MySQL教程 0次下載
- phpy:PHP與Python互調(diào)用庫(kù) 1042次閱讀
- 通達(dá)OA漏洞檢測(cè)工具介紹 4094次閱讀
- PHP中的生成器 879次閱讀
- 如何在Ubuntu 20.04安裝PHP 8.1并將其與Nginx集成 3511次閱讀
- 聊聊PHP的web應(yīng)用程序開發(fā)框架存在的漏洞有哪些 1834次閱讀
- php是什么語(yǔ)言編寫的 5024次閱讀
- 一文知道PHP的優(yōu)點(diǎn)和缺點(diǎn) 7023次閱讀
- 為什么PHP的開發(fā)效率比java高但是java比PHP流行 1w次閱讀
- PHP與Python對(duì)比 如何選擇? 4548次閱讀
- 光線追蹤算法匯總 1.7w次閱讀
- php開發(fā)中遇到的難點(diǎn)有哪些_十大php開發(fā)常見問題盤點(diǎn) 1.8w次閱讀
- DevOps工具鏈的項(xiàng)目端到端應(yīng)用實(shí)踐過程 7236次閱讀
- php開發(fā)環(huán)境的搭建和使用 3474次閱讀
- php實(shí)現(xiàn)定時(shí)器任務(wù)方法詳解 1435次閱讀
- PHP實(shí)現(xiàn)定時(shí)任務(wù)的幾種方法詳解 7162次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論