Вот достаточно подробная статья на эту тему.
В принципе достаточно написать
xdebug_start_trace('<Путь-к файлу>.html', XDEBUG_TRACE_HTML);
...
...
xdebug_stop_trace();
Вот достаточно подробная статья на эту тему.
В принципе достаточно написать
xdebug_start_trace('<Путь-к файлу>.html', XDEBUG_TRACE_HTML);
...
...
xdebug_stop_trace();
На офсайте нажимаем на «Get FirePHP».
Далее скачиваем серверную часть.
Потом её каким-нибудь образом встраиваем в проект. К примеру (коллега такое сделал):
public static function fb()
{
if (!ob_get_level()) {
ob_start();
}
$instance = FirePHP::getInstance( true );
$args = func_get_args();
return call_user_func_array( array( $instance, 'fb' ), $args );
}
Собственно всё – после этого в консоли будет удобный вывод всяких массивов и т.п. (например, при обращении к <>::fb( array(1,2,3) ) )
Установка
Скачать
После помещения библиотеки в папку с расширениями в php.ini надо написать
zend_extension = <путь-к-php>\ext\php_xdebug.dll
Далее ставим плагин для firefox – Xdebug Helper, настройка всего инструментария – в базе знаний Google
Работа с Xdebug под Eclipse
ещё про установку и настройку xdebug,
Профилирование с Xdebug на habrahabr.
Самое основное – параметр в php.ini
xdebug.profiler_enable_trigger=On
В итоге у меня получилось (php5.3)
zend_extension = путь-к-php53\ext\php_xdebug.dll xdebug.remote_enable=1 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_port=9000 xdebug.remote_host=localhost xdebug.idekey=default ;xdebug.dump_once = On ;xdebug.dump_globals = On ;xdebug.dump_undefined = On ;xdebug.dump.REQUEST = * ;xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT xdebug.profiler_enable=Off xdebug.profiler_output_dir="c:\traces" xdebug.profiler_enable_trigger=On xdebug.profiler_output_name = cachegrind.out.%t.%p
Теперь достаточно передать в GET-параметре ?XDEBUG_PROFILE (вот как раз тут полезен XdebugHelper – там это можно включить для определённого сайта).
много ссылок на полезные статьи.
Инструмент для анализа логов Xdebug от создателя.
Дебаг проекта через NetBeans совместно с XdebugHelper:
запустить отладчик в NetBeans и затем нажать кнопку «run» (это NetBeans заставит слушать Xdebug), а затем открыть сайт с активированным на нём XdebugHelper’ом.
При разработке сайта под большую нагрузку нужно постоянно искать слабые места в коде. К примеру, при добавлении нового функционала на частопосещаемой странице появился кусок кода (функция, метод), который заметно замедляет работу проекта в целом. Нет пределов совершенству, и проект можно вылизывать до бесконечности, но на что стоит обратить внимание – подскажет профайлер кода. Лично я использую в работе APD (Advanced PHP Debugger). Во-первых, он хранится в репозитории модулей PHP, во-вторых, мне понравилось им пользоваться, в-третьих, у автора есть достаточно подробное описание в книге «Профессиональное программирование на PHP», в-четвёртых, простота использования. Из минусов – давно не обновлялся и, видимо, уже заброшен разработчиком.
Установка производится с помощью инсталлятора PEAR
#pear install apd
После чего в файл php.ini необходимо добавить установленное расширение и произвести настройку. (Приведу для примера параметры для Windows)
zend_extension = <Путь к установленному php>\ext\php_apd.dll apd.dumpdir = c:\apd_traces\ ; здесь будут храниться промежуточные файлы трассировок apd.statement_trace = 1
Если вызвать phpinfo(), должен появиться раздел с параметрами APD.
Использование.
Активизируется трассировка путём включения в нужный php-файл вызова функции
apd_set_pprof_trace('c:\TEMP\apd_traces');
Протоколируется следующие события:
.
При этом ведутся 3 счётчика:
.
После того, как файлы созданы (т.е. скрипт отработал), можно, к примеру, закомментировать строку вызова
apd_set_pprof_trace('c:\TEMP\apd_traces');
(она больше не нужна).
При установке APD из репозитория в папке
<Путь к php>\PEAR\Console\ появится файл pprofp.
Далее можно создать файл, к примеру, run.bat:
php.exe pprofp -r c:\TEMP\apd_traces\pprof.00288.53 > c:\TEMP\apd_out_rmT.txt
где c:\TEMP\apd_traces\pprof.00288.53 – это промежуточный файл трассировок, созданный при выполнении скрипта, а c:\TEMP\apd_out_rmT.txt будет создан и будет содержать полезную информацию в удобной форме.
Можно, конечно, создать и более «умный» батник, котороый бы принимал имя промежуточного файла параметром, но статья не об этом.
В итоге в файле увидим время выполнения функций и количество вызовов, что в дальнейшем должно помочь писать более «быстрый» код.