安全圈 | 专注于最新网络信息安全讯息新闻

首页

qihoo360/phptrace:php腳本的跟踪和故障排除工具。

作者 lervik 时间 2020-03-04
all

我們有一個新的跟踪工具熔融,它是一個開放跟踪支持的跟踪,為分佈式跟踪系統。

施工跟踪;熔化;開放跟踪;合作

中文自述

phptrace是一個用於PHP的低開銷跟踪工具。

它可以在運行時跟踪所有PHP執行、函數調用、請求資訊。並提供過濾、統計、當前狀態等功能。

在所有的環境中,特別是在生產環境中,查找阻塞、重載問題和調試是非常有用的。

特徵:

其他:

新聞我們已經建立了另一個有趣的項目pika。它是一個與Redis協定相容的NoSQL,具有巨大的存儲空間。

從源安裝

選取焦油球

tar -xf phptrace-{version}.tar.gz cd phptrace-{version}/extension

建造

PHP擴展

{php_bin_dir}/phpize ./configure --with-php-config={php_bin_dir}/php-config make

按一下二進位

make cli

安裝和配寘

在PHP路徑中安裝PHP擴展,CLI二進位檔案

make install-all

編輯php.ini,添加以下行。如果PHP在PHP fpm模式下運行,則需要重新加載。

php.ini extension=trace.so

核實

php -r 'for ($i = 0; $i < 20; $i++) usleep(50000);' & phptrace -p $!

如果工作正常,你應該看看下麵的內容

process attached [pid 3600]> cli php - [pid 3600]> {main}() called at [Command line code:1] [pid 3600] > usleep(50000) called at [Command line code:1] [pid 3600] < usleep(50000) = NULL called at [Command line code:1] ~ 0.051s 0.051s [pid 3600] > usleep(50000) called at [Command line code:1] [pid 3600] < usleep(50000) = NULL called at [Command line code:1] ~ 0.051s 0.051s [pid 3600] > usleep(50000) called at [Command line code:1] [pid 3600] < usleep(50000) = NULL called at [Command line code:1] ~ 0.051s 0.051s [pid 3600] > usleep(50000) called at [Command line code:1] ...

用法

試試php example.php。

php example.php

命令列選項

跟踪執行

$ phptrace -p 3600 [pid 3600] > Me->run() called at [example.php:57] [pid 3600] > Me->say("good night") called at [example.php:33] [pid 3600] < Me->say("good night") = NULL called at [example.php:33] ~ 0.000s 0.000s [pid 3600] > Me->sleep() called at [example.php:34] [pid 3600] > Me->say("sleeping...") called at [example.php:27] [pid 3600] < Me->say("sleeping...") = NULL called at [example.php:27] ~ 0.000s 0.000s [pid 3600] > sleep(2) called at [example.php:28] [pid 3600] < sleep(2) = 0 called at [example.php:28] ~ 2.000s 2.000s [pid 3600] < Me->sleep() = NULL called at [example.php:34] ~ 2.000s 0.000s [pid 3600] > Me->say("wake up") called at [example.php:35] [pid 3600] < Me->say("wake up") = NULL called at [example.php:35] ~ 0.000s 0.000s [pid 3600] < Me->run() = NULL called at [example.php:57] ~ 2.000s 0.000s

列印當前狀態

$ phptrace status -p 3600 ------------------------------- Status -------------------------------- PHP Version: 7.0.16 SAPI: cli script: example.php elapse: 26.958s ------------------------------ Arguments ------------------------------ $0 ------------------------------ Backtrace ------------------------------ #0 fgets() called at [example.php:53] #1 {main}() called at [example.php:53]

使用url/class/function篩檢程式跟踪

$ phptrace -p 3600 -f type=class,content=Me [pid 3600]> Me->run() called at [example.php:57] [pid 3600]> Me->say("good night") called at [example.php:33] [pid 3600]< Me->say("good night") = NULL called at [example.php:33] ~ 0.000s 0.000s [pid 3600]> Me->sleep() called at [example.php:34] [pid 3600]> Me->say("sleeping...") called at [example.php:27] [pid 3600]< Me->say("sleeping...") = NULL called at [example.php:27] ~ 0.000s 0.000s [pid 3600]< Me->sleep() = NULL called at [example.php:34] ~ 2.000s 2.000s [pid 3600]> Me->say("wake up") called at [example.php:35] [pid 3600]< Me->say("wake up") = NULL called at [example.php:35] ~ 0.000s 0.000s [pid 3600]< Me->run() = NULL called at [example.php:57] ~ 2.001s 0.000s

限制幀/URL顯示時間

$ phptrace -p 3600 -l 2 [pid 3600] > Me->run() called at [example.php:57] [pid 3600] > Me->say("good night") called at [example.php:33] [pid 3600] < Me->say("good night") = NULL called at [example.php:33] ~ 0.000s 0.000s [pid 3600] > Me->sleep() called at [example.php:34] [pid 3600] > Me->say("sleeping...") called at [example.php:27] [pid 3600] < Me->say("sleeping...") = NULL called at [example.php:27] ~ 0.000s 0.000s

貢獻

歡迎願意改善PHP環境的開發人員。

如果您有興趣但不知道如何開始,請嘗試以下操作:

許可證

此項目是在Apache2.0許可下發佈的。