Хотелось бы добавить свои кнопки управления в панель инструментов PhpStorm для быстрого переключения режимов отладки.
xDebug — отличный отладчик, но он существенно замедляет сайты. Во время разработки, желательно включать xDebug только тогда, когда он действительно нужен. Давайте посмотрим, как включить, отключить xDebug и установить режимы профилирования в среде разработки Laragon. Также увидим, как добавить кнопки этих действий на панель инструментов phpStorm.
Так будет выглядеть конечный результат (4 крайние кнопки справа).
Вначале давайте создадим командный файл для переключения xDebug. Предполагается, что мы работаем под Wondows 10 с установленной оболочкой Linux Bash. В некой папке, которая находится в PATH Windows, создадим два файла: xdebug.bat и xdebug.sh.
xdebug.bat:
@echo off
bash xdebug.sh %*
xdebug.sh:
#!/bin/bash
#set -v
ini_file="/mnt/c/laragon/bin/php/php-7.2.10/php.ini"
if [ -z $1 ]
then
if grep -q '^extension=blackfire' "$ini_file"
then
echo 'xdebug is BLACKFIRE'
exit 0
fi
if grep -q '\;zend_extension' "$ini_file"
then
echo 'xdebug is OFF'
exit 0
fi
if grep -q 'xdebug.profiler_enable=0' "$ini_file"
then
echo 'xdebug is ON'
exit 0
else
echo 'xdebug is PROFILER'
exit 0
fi
fi
if [ 'on' = $1 ]
then
sed -i s/^\;zend_extension=php_xdebug/zend_extension=php_xdebug/g $ini_file
sed -i s/^xdebug.profiler_enable=1/xdebug.profiler_enable=0/g $ini_file
sed -i s/^extension=blackfire/\;extension=blackfire/g $ini_file
pid=$(pgrep blackfire-agent)
if [ ! -z $pid ]
then
kill $pid
fi
/mnt/c/laragon/laragon.exe reload apache
exit 0
fi
if [ 'profiler' = $1 ]
then
sed -i s/^\;zend_extension=php_xdebug/zend_extension=php_xdebug/g $ini_file
sed -i s/^xdebug.profiler_enable=0/xdebug.profiler_enable=1/g $ini_file
sed -i s/^extension=blackfire/\;extension=blackfire/g $ini_file
pid=$(pgrep blackfire-agent)
if [ ! -z $pid ]
then
kill $pid
fi
/mnt/c/laragon/laragon.exe reload apache
exit 0
fi
if [ 'off' = $1 ]
then
sed -i s/^zend_extension=php_xdebug/\;zend_extension=php_xdebug/g $ini_file
sed -i s/^xdebug.profiler_enable=1/xdebug.profiler_enable=0/g $ini_file
sed -i s/^extension=blackfire/\;extension=blackfire/g $ini_file
pid=$(pgrep blackfire-agent)
if [ ! -z $pid ]
then
kill $pid
fi
/mnt/c/laragon/laragon.exe reload apache
exit 0
fi
if [ 'blackfire' = $1 ]
then
sed -i s/^zend_extension=php_xdebug/\;zend_extension=php_xdebug/g $ini_file
sed -i s/^xdebug.profiler_enable=1/xdebug.profiler_enable=0/g $ini_file
sed -i s/^\;extension=blackfire/extension=blackfire/g $ini_file
/mnt/c/laragon/laragon.exe reload apache
pid=$(pgrep blackfire-agent)
if [ ! -z $pid ]
then
kill $pid
fi
exec /mnt/c/Programs/Blackfire/blackfire-agent.exe
exit 0
fi
echo 'argument can be "on", "off", "profiler" or "blackfire" only'
exit 1
Использование:
xdebug.bat вызывает xdebug.sh чтобы сделать следующее:
php.ini (чьё размещение указано в в первой строке xdebug.sh) должен содержать примерно такие строки:
[blackfire]
;extension=blackfire
; On Windows use the following configuration:
; extension=php_blackfire.dll
; Sets the socket where the agent is listening.
; Possible value can be a unix socket or a TCP address.
; Defaults to unix:///var/run/blackfire/agent.sock on Linux,
; unix:///usr/local/var/run/blackfire-agent.sock on MacOSX,
; and to tcp://127.0.0.1:8307 on Windows.
;blackfire.agent_socket = unix:///var/run/blackfire/agent.sock
blackfire.agent_socket = tcp://127.0.0.1:8308
blackfire.agent_timeout = 0.25
; Log verbosity level (4: debug, 3: info, 2: warning, 1: error)
blackfire.log_level = 4
; Log file (STDERR by default)
blackfire.log_file = /tmp/blackfire.log
; Sets fine-grained configuration for Probe.
; This should be left blank in most cases. For most installs,
; the server credentials should only be set in the agent.
blackfire.server_id = your-server-id
; Sets fine-grained configuration for Probe.
; This should be left blank in most cases. For most installs,
; the server credentials should only be set in the agent.
blackfire.server_token = your-token
[Xdebug]
;zend_extension=php_xdebug-2.6.1-7.2-vc15-nts-x86_64.dll
xdebug.remote_enable=1
xdebug.remote_connect_back=On
xdebug.remote_port="9001"
xdebug.profiler_enable=0
xdebug.profiler_output_dir = c:\laragon\tmp
xdebug.profiler_output_name = %R_%t_cachegrind.out
xdebug.show_mem_delta = 0
Вы можете опустить секцию [blackfire], если вам не нужен этот профилировщик.
С этого момента вы можете использовать команду xdebug в терминале PhpStorm. Но давайте пойдём дальше. Мы можем добавить эти команды в External Tools в PhpStorm. Откройте Settings (Ctrl+Alt+S), найдите Tools > External Tools, и добавьте несколько инструментов, как показано ниже:
Сохраните ваши настройки. Теперь новые команды доступны в меню PhpStorm Tools > External Tools, и пора добавить кнопки к панели инструментов PhpStorm. Откройте Settings (Ctrl+Alt+S), найдите Appearance & Behavior > Menus and Toolbars, и добавьте несколько кнопок, как показано ниже:
Вы можете также добавить иконки кнопок (.png, 16 x 16). Мои иконки здесь:
На этом всё. Просто кликните на соответствующую кнопку, чтобы с лёгкостью переключить режим отладки и профилирования в PhpStorm.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Не могу активировать Custom post types and Taxonomies в polylang
Не могу понять, как убрать дублирование данных о подключении к базе вenv файле symfony4 проекта