Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > PHP / MySQL

PHP / MySQL Создание динамических Веб-ресурсов

Ответ
 
Опции темы
Старый 08.12.2012, 05:47   #1
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Профайлинг с помощью xdebug

Иногда бывает, что ваш сайт тормозит, причём хрен разбери отчего (тяжкое "наследство", раздолбайство автора плугина для Вордпресса, или же последствия косяка проявились лишь через время после того, как сайт был запущен). Определиться с тем, какие куски кода сколько времени жрут, поможет профайлинг. Для профайлинга я предлагаю использовать xdebug.

Естественно, перво-наперво его надо установить. Рекомендации по установке зависят от ОС вашего сервера, нет смысла приводить их, just google it.

В Ubuntu-подобных дистрах достаточно для установки написать: apt-get install xdebug

К сожалению, мне повезло не столь сильно, и репозитории yum'а в моей CentOS о таком пакете не слыхали. Потыкавшись в вебе, я пришёл к выводу, что скомпилить из исходников будет быстрее (единственный способ, который работает ВСЕГДА). Вот инструкция, по которой я это делал.

Так или иначе, когда вы установили xdebug, нужно кое-что дописать в php.ini, который обычно лежит здесь: /etc/php.ini

В нём я добавил следующую строчку:
extension=xdebug.so
Теперь рестартаните ваш веб-сервер, у меня это делается так:
service httpd restart
Как вариант:
service apache2 restart
Теперь посмотрите на phpinfo. Создайте файлик php и в нём напишите:
<?php phpinfo(); ?>
А теперь зайдите на него. Должно отобразить таблицу с различными параметрами php. Если вы найдёте там блок xdebug, то это значит, что установился он успешно. Теперь давайте настроим профилирование.

Открываем снова php.ini и добавляем строку:
xdebug.profiler_output_dir = "/var/log/xdebugprofiler"
Тут всё понятно: сюда будут высираться результаты профайлинга, чтобы мы могли их достать и проанализировать. Помните: папка должна быть writeable, чтобы дебаггер смог туда что-то написать. Также помните, что результаты профайлинга весят прилично (десятки мегабайт, а, при умелом говнокоде, могут весить и сотни), так что следите, чтобы там, куда будут их писать, было свободное место. Ещё целесообразно указывать папку, к которой у вас есть ftp-доступ, чтобы вы могли без проблем скачать результаты к себе на рабочую машину для анализа.

Далее надо активировать сам профайлинг. Вообще, есть такой параметр:
xdebug.profiler_enable
Он активирует профайлинг во ВСЕХ исполнениях php, если выставить на единицу. Но я не рикаминдую это делать, особенно на live-сервере: ВСЕ запросы ВСЕХ юзеров обработаются профайлером. А нам ведь чаще всего надо проанализировать исполнение конкретного сайта или даже страницы.

Вместо него в php.ini пишем вот это:

xdebug.profiler_enable_trigger = 1
Это строка активирует профайлер, но только по запросу.А запрос такой: в GET или POST-запросе нужно передать спец. параметр DEBUG_PROFILE. Это послужит сигналом к тому, чтобы профайлер стал собирать данные.

Ну, давайте приступим. Проще всего передать этот параметр через GET:
www.mysite.ru/test.php?XDEBUG_PROFILE.

После того, как страница сгенерируется, отправляйтесь в папку, указанную в xdebug.profiler_output_dir и забирайте оттуда только что созданный файл к себе на рабочую машину.

Далее вам понадобится программа для анализа, ведь отчёт не очень человекопонятен. Для Винды есть программа WinCacheGrind. Делаете File - Open на ваш отчёт и опа! Видно, вызов какой функции сколько времени занял.

Так вы сможете понять, где находится "bottle neck" и исправить его.

Не забудьте отключить профайлер после того, как всё сделаете, нехрен ему висеть включённым!
xdebug.profiler_enable_trigger = 0
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Harter (08.12.2012), moka (08.12.2012), Randomize (08.12.2012)
Старый 08.12.2012, 06:00   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Профайлинг с помощью xdebug

Глянь кстати ещё New Relic. Говорят охрененная штука..
(Offline)
 
Ответить с цитированием
Старый 08.12.2012, 06:29   #3
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Профайлинг с помощью xdebug

Видел, в ролике много себя нахваливают в общих чертах, но никакой конкретики. Насторожило, что в ролике показано, что оно работает с PHP, Ruby, .NET и т.д. (вспомнили всё, на чём можно писать сайты), т.е. оно может в профилирование всего перечисленного? Указать пальцем на то, какая конкретно часть кода тормозит? Если нет, то, ну, скорость загрузки сайта я и сам могу знать, например. Т.е. конечно прикольно видеть это в виде графика, но всё же это не дебаггер.
(Offline)
 
Ответить с цитированием
Старый 08.12.2012, 19:00   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Профайлинг с помощью xdebug

Сообщение от ABTOMAT Посмотреть сообщение
Видел, в ролике много себя нахваливают в общих чертах, но никакой конкретики. Насторожило, что в ролике показано, что оно работает с PHP, Ruby, .NET и т.д. (вспомнили всё, на чём можно писать сайты), т.е. оно может в профилирование всего перечисленного? Указать пальцем на то, какая конкретно часть кода тормозит? Если нет, то, ну, скорость загрузки сайта я и сам могу знать, например. Т.е. конечно прикольно видеть это в виде графика, но всё же это не дебаггер.
Профилирование идёт вплоть до строки в коде и функций. Есть полный стёк, также детальные отчёты о ошибках в работе кода.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:52.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com