Список полезных инструментов для php разработчика

  • Отладка
    • Tutorial

    Все идет от лени. Вы получили чужой очень большой проект в котором нужно сделать небольшие правки, или же написали скрипт и сразу не очевидно, что в нем еще требует оптимизации. Как быть? Читать и анализировать код, выводить каждый шаг на экран или в файл (var_dump() и т.д.) не всегда эффективно, ведь можно воспользоваться средствами отладки, которых на сегодняшний день очень много. Кратко перечислю часто встречающиеся…

    Xdebug Debugger and Profiler Tool - расширение PHP. Требует установки на сервер и настройки. Может отображать: стек вызовов функций, распределение памяти. Возможности: профайлинг, анализ покрытия кода, защита от бесконечной рекурсии, интерактивная отладка скриптов. ПО для визуализации логов xdebug: Webgrind – веб-интерфейс для профайлинга Xdebug, написанный на PHP, MacGDBp – Mac OS X клиент, который позволяет отлаживать PHP приложения при помощи Xdebug. Linux GUI . Бесплатный. Интегрируется с многими IDE. См . При включении опции в php.ini:

    Html_errors = On
    будет форматировать вывод var_dump() и сообщения об ошибках.

    Xhprof - расширение PHP от facebook. Требует установки на сервер и настройки. Позволяет собирать время выполнения каждой функции, использование памяти, время ожидания, количество вызовов и многое другое. Это расширение доступно из репозитория PECL . Почитать документацию можно тут [тыц] . Так же . Из преимуществ сильно не грузит систему, можно ставить на бой. Бесплатный.

    DBG (PHP Debugger and Profiler) - расширение PHP. Требует установки на сервер и настройки. Позволяет работать на тестовом или/и рабочем сервере и отлаживать скрипты локально или удаленно, из IDE или консоли. Платная/бесплатная версии.

    ZendDebug - расширение PHP, входит в состав Zend Studio (платная IDE). Требует установки на сервер и настройки. Позволяет практически все тоже, что и xdebug, GUI в IDE Zend Studio или Zend Server. Платный. Чуть ниже рассмотрим его более подробно.

    Memtrack - расширение PHP. Позволяет искать утечки памяти. Удобно проверять скрипты запускаемые по крону или в качестве демона. Бесплатный. См. [тыц]

    APD Advanced PHP debugger - расширение PHP. Слабый конкурент xdebug, но имеет в себе возможности memtrack. Плохо интегрируется с IDE, однако имеет консольный интерфейс (см. [тыц ]). Бесплатный.

    DTrace + PHP - расширение PHP. Низкоуровневая отладка. См. [тыц] . Так же не нужно забывать о существовании и прочих системных отладчиков, которые порой способны показать где, так сказать, «собака порылась». Например
    strace -p 1111
    анализ системных вызов скрипта, с PID=1111. Также сетевые анализаторы wireshark (Windows), ngrep , tcpdump (Linux) - для анализа сетевого трафика, протоколов и т.д.

    FirePHP - класс, написан на php + расширение для FireFox. Дает возможность посылать отладочные сообщения в консоль Firebug с помощью вызова php методов. Вся информация посылается через заголовки X-FirePHP-Data, тем самым не пересекаясь с основным контентом страниц. Бесплатный. См.

    php-console - написан на php + расширение для Google Chrome. Аналог FirePHP, только для Google Chrome, но несколько с другим функционалом. Бесплатный. См. php-console

    PHP_Debug класс, написан на php. Помогает в отладке PHP кода, показывает путь выполнения скрипта, отображает все переменные, время выполнения, включенные файлы, выполненные запросы, watch переменные… Эта информация собирается во время выполнения скрипта, и отображается по его завершению и потом может быть использована в любой момент. Бесплатный.

    Pinba - сервис мониторинга и статистики в реальном времени. См

    . Бесплатная.

    Отладчики в современных CMS/CMF/Framework . Их не рассматриваем, т.к. зачастую они имеют специфику и разработаны под конкретную оболочку, что делает не возможным использование их извне (IDE) или применять без значительных изменений в своих разработках.

    Для сбора и анализа узких мест в ваших приложениях иногда может пригодится методика централизованного хранении syslog, см .

    Вернемся к ZendDebug. Так как я в основном пользуюсь Zend Studio, то мне наиболее удобно с ним работать. Он позволяет сразу понять ход выполнения скрипта, поддерживает навигацию по коду из IDE. Не нужны никакие сторонние инструменты, кроме IDE. Это действительно удобно, так сказать настроил один раз и пользуешься.

    Отладка и профилирование скриптов в Zend Studio возможна как минимум двумя способами при помощи xdebug или ZendDebug. Только вот профилирование сайта с xdebug у меня не заработало, пишет что нельзя так - только отладка.

    Про локальную отладку кода писали еще во времена Zend Studio 5.5 . С тех времен мало что изменилось. Но я столкнулся с проблемой, когда web сервер и отлаживаемый код находится на удаленном сервере. Часто такие песочницы закрыты извне, а отрыты только нужные для работы порты. Но если к такой песочнице есть доступ по SSH, то настроить ZendDebug все таки можно, не мешая фаерволу выполнять свою функцию.

    Забегая вперед отмечу, что для этого нужно будет создать SSH туннель. Немного о том, зачем SSH туннель нужен в этом случае.

    По умолчанию Zend Studio инициирует сеанс удаленной отладки, отправив HTTP запрос на отладочный сервер. Этот запрос содержит параметры обратного адреса (IP-адрес и номер порта), который ZendDebug (установленный на сервере) использует при запуске нового подключения к Zend Studio, чтобы ретранслировать информацию об отладке. Кстати, инициализировать сам сеанс отладки можно как из IDE, так и из браузера установив компонент, поставляемый вместе с Zend Studio, будет довольно удобно.

    Обычная отладочная сессия будет иметь место, например, в случае, когда код, WEB сервер и IDE находятся на локальном компьютере.

    Но зачастую WEB сервер разделен с IDE брандмауэрами, маршрутизаторами, прокси-серверами т.д. Тут-то и пригодится SSH туннель.

    В случае с туннелем процесс установления сеанса отладки состоит из двух основных этапов:
    - создания SSH туннеля;
    - настройки Zend Debugger, для передачи своего трафика через SSH туннель.

    Схема отладочной сессии через SSH туннель примет вид:


    Обычная отладочная сессия через SSH туннель

    Zend Studio, по умолчанию, открывает порт 10137. Его и будем использовать в примерах далее. Можно назначить и другой порт, если это необходимо.

    Создание SSH туннеля в Linux или Mac OS X можно в командной строке:
    ssh :127.0.0.1: @пример:

    User@workstation:~> ssh -R 10137:127.0.0.1:10137 user@debugserver user@debugserver"s password:

    
    Top