Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Замолвим слово об отладке и профилировании [PHP]

Anna | 29.05.2014 | нет комментариев

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

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

html_errors = On

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

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

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 и прочих системных отладчиков, которые порой способны показать где, так сказать, «собака порылась». Скажем
strace -p 1111 
обзор системных вызов скрипта, с PID=1111. Также сетевые анализаторы wireshark (Windows), ngreptcpdump(Linux) — для обзора сетевого трафика, протоколов и т.д.

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

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

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

Pinba — сервис мониторинга и статистики в настоящем времени. См
Мониторим php в настоящем времени 
Мониторинг продуктивности PHP-кода с поддержкой Pinba. Бесплатная.

Статьи всеобщего нрава:
Профилирование PHP-кода
Отладка трудных веб-приложений — результативная багодробилка на production-серверах

Отладчики в современных 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 туннель.

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

Схема отладочной сессии через SSH туннель примет вид:
image
Обыкновенная отладочная сессия через SSH туннель

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

Создание SSH туннеля в Linux либо Mac OS X дозволено в командной строке:
ssh <порт Zend Studio >:127.0.0.1:<порт для открытия debug server> @пример:

user@workstation:~> ssh -R 10137:127.0.0.1:10137 user@debugserver
user@debugserver's password: <enter user's password on the debug server>
Welcome to the Debug Server!
user@debugserver:~$

Для создания SSH туннеля в Microsoft Windows, дозволено применять PuTTY. Позже создания рабочего SSH соединения, нужно добавочно настроить туннель.
image

Со стороны IDE проверьте, что слушаются порт 10137 и локальный IP адрес 127.0.0.1
image

Практика тенулирования трафика вам может сгодится и для других целей. Скажем локальными утилитами делать SQL-дампы СУБД, когда удаленная база разрешает соединение только с 127.0.0.1 и т.д.

Думаю из списка выше всякий сумеет обнаружить себе комфортный инструмент на всякий день. И что бы разработка приносила еще огромнее удовольствия, а на вопрос — «Что случилось? Отчего лежим?», был неизменно оперативный результат.

Славной отладки и скриптов без ошибок, спасибо за внимание.

Источник: programmingmaster.ru

 

Оставить комментарий
БАЗА ЗНАНИЙ
СЛУЧАЙНАЯ СТАТЬЯ
СЛУЧАЙНЫЙ БЛОГ
СЛУЧАЙНЫЙ МОД
СЛУЧАЙНЫЙ СКИН
НОВЫЕ МОДЫ
НОВЫЕ СКИНЫ
НАКОПЛЕННЫЙ ОПЫТ
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB