分析 PHP 指令碼
本文將引導你完成使用 Xdebug 分析 PHP 指令碼的過程。
使用 Xdebug 在 PHP 中分析指令碼
Xdebug 是一種流行的 PHP 工具,用於除錯和分析 PHP 指令碼。分析指令碼意味著分析程式碼以確保其得到優化並具有高階別的效能。
分析將提供有關程式的 CPU、記憶體和網路利用率的資訊。下面的部分將演示如何設定分析環境並分析 PHP 中的示例指令碼。
安裝 Xdebug 工具
第一步是下載 Xdebug 工具。首先,使用以下命令更新你的系統。
sudo apt-get update
更新本地包後,在終端使用以下命令安裝 Xdebug 工具。
sudo apt-get install php-xdebug
接下來,導航路徑 /etc/php/8.1/mods-available/xdebug.ini
並開啟 xdebug.ini
檔案。這裡,8.1
是教程中使用的系統的 PHP 版本。
它可能因使用者而異。在 xdebug.ini
檔案中新增以下行。
zend_extension=/usr/lib/php/20210902/xdebug.so
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1
xdebug.remote_log = /tmp/xdebug_remote.log
xdebug.remote_mode = req
xdebug.remote_port = 9005
此處,zend_extension
屬性值的路徑/usr/lib/php/20210902/xdebug.so
中的目錄 20210902
可能因系統而異。導航到路徑並使用正確的目錄名稱作為 zend_extension
屬性的值。
接下來,如果 Web 伺服器是 Apache,則使用以下命令重新啟動 Web 伺服器。
sudo systemctl restart apache2
sudo /etc/init.d/apache2 restart
對於 nginx
,使用以下命令。
sudo systemctl restart nginx
最後,xdebug 安裝在系統中。
配置 php.ini
以使用 Xdebug
我們可以通過檢視 phpinfo()
函式的輸出來驗證 PHP 中 Xdebug 的安裝。但是,該工具尚未準備好使用。
我們需要在 php.ini
檔案中配置它。為此,導航到 php.ini
檔案並使用文字編輯器開啟它。
我們可以在 phpinfo()
輸出中找到檔案的路徑。在當前系統中,該檔案位於路徑 /etc/php/8.1/apache2/php.ini
。
在 php.ini
檔案中,在檔案末尾新增以下行。
[xdebug]
zend_extension=/usr/lib/php/20210902/xdebug.so
xdebug.show_local_vars=1
使用系統中使用的目錄重新命名目錄 20210902
。接下來,將 display_errors
和 display_startup_errors
屬性設定為 On
並儲存檔案。
再次重新啟動 Web 伺服器。現在,Xdebug 已經可以使用了。
分析 PHP 指令碼
最後一步是分析 PHP 指令碼。我們需要編寫一些 PHP 程式碼來分析它。
例如,建立四個變數 $a
、$b
、$c
和 $d
。在 $a
和 $b
中分配整數值 5
和字串值'5'
。
同樣,在 $c
和 $d
中分配陣列 array(5)
和 array('5')
。
接下來,使用 var_dump()
函式轉儲所有四個變數。最後,再次轉儲變數 $v
。
請注意,我們沒有建立任何名為 $v
的變數。
示例程式碼:
$a=5;
$b='5';
$c=array(5);
$d=array('5');
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
var_dump($v);
輸出:
在輸出部分,對 PHP 指令碼進行了概要分析。程式碼的錯誤部分被突出顯示。
它顯示了諸如呼叫堆疊之類的資訊,其中提供了有關時間、記憶體、功能和位置的資訊。同樣,也給出了區域性範圍內的變數資訊。
這樣,我們就可以使用 Xdebug 來分析 PHP 指令碼了。
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn