簡體   English   中英

如何為命令行 PHP 腳本觸發 XDebug 分析器?

[英]How to trigger XDebug profiler for a command line PHP script?

XDebug 提供配置指令xdebug.profiler_enable_trigger ,允許在通過 HTTP 調用腳本時通過傳遞 GET 或 POST 參數“XDEBUG_PROFILE”來激活分析。 如果您不想對所有腳本進行性能分析,而只想對少數特殊情況進行分析而不總是更改 PHP 配置,這將非常方便。

有沒有辦法為命令行 PHP 程序實現相同的行為? 我試圖將XDEBUG_PROFILE作為命令行參數傳遞,但沒有奏效。

一般來說,分析命令行 PHP 效果很好,但我希望具有與瀏覽器和 HTTP 服務器相同的每次調用靈活性。

您可以使用-d標志傳遞 INI 設置: php -d xdebug.profiler_enable=On script.php

我通過以下方式在 Ubuntu/Netbeans 上工作:

  • 將 xdebug 配置行從 /etc/php5/apache2/php.ini 文件復制到 /etc/php5/cli/php.ini
  • 使用調試會話的名稱設置環境變量(您可以從 netbeans 啟動調試時啟動的頁面的 url 中的查詢字符串中獲取此變量)命令是:export XDEBUG_CONFIG="idekey=netbeans-xdebug"

然后它只是在netbeans中開始調試並在命令行中執行“php myscript.php”的情況。

在遠程網絡服務器上使用 PhpStorm,我使用以下命令:

XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=server_name" php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` myscript.php

其中server_name代表 PhpStorm 項目配置中的服務器名稱

Xdebug 遠程調試頁面所述,還可以通過包含“profile_enable=1”指令的XDEBUG_CONFIG環境變量啟用分析:

XDEBUG_CONFIG="profiler_enable=1" php ...

為了方便使用,上面的命令行可以寫成別名:

alias xphp='XDEBUG_CONFIG="profiler_enable=1" php'

別名可以添加到您的 shell 的(交互式)啟動腳本之一,例如~/.bash_aliases~/.bashrc (根據您的系統)。

在 VM 上進行開發時使其與 Netbeans 一起工作的類似但不同的過程。

需要傳入遠程啟用標志、自動啟動標志、ide 標志和遠程主機的名稱。

php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_host=NAME.OF.HOST script.php

我創建了一個 shell 腳本來處理客戶端調試。

腳本名稱:phpdebug

#!/usr/bin/ksh
php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*

我將此腳本放在/usr/bin並授予它執行權限。

該腳本接受傳遞給 phpdebug 的參數,並使用 xdebug 參數調用 php,並將傳遞到 shell 腳本的參數附加到末尾,即 $*。

在使用 WAMP 的 PhpStorm 7 中,我通過將我已經工作的 xdebug 設置從 C:\\wamp\\bin\\apache\\apache2.2.22\\bin\\php.ini 復制到 C:\\wamp\\bin\\php\\ 的 xdebug 部分來實現這一點phpX.YZ\\php.ini。 然后我像這樣運行我的腳本:

php -d xdebug.idekey=PHPSTORM script.php

這甚至適用於調試 Laravel 工匠腳本

php -d xdebug.idekey=PHPSTORM artisan db:seed --force

對於 Xdebug 3

現在,使用XDEBUG_MODE環境變量可以輕松地為單個腳本啟用 Xdebug:

XDEBUG_MODE=profile php script_to_be_profiled.php

來自 Jetbrains 的文檔

使用 PHP 命令行開關通過調試啟動腳本 設置一個環境變量,告訴 XDebug 連接到 IDE:

Windows / MacOS / Linux

export XDEBUG_CONFIG="idekey=123"  

這里 idekey 應該有一個隨機值。

使用以下命令行選項啟動 PHP:

php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_connect_back=0 path/to/script.php

您可以在 Vagrant 中使用 10.0.2.2 而不是 127.0.0.1(請參閱相關的 SO 問題)。

歡迎使用 xdebug 3!

就是現在:

xdebug.mode=profile

所以:

php -d xdebug.mode=profile script.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM