Последние обновления

Инструменты профилирования пхп кода


Описание темы отсутсвует
Тема создана:
Ответов: 0
Просмотров: 303
Последний ответ:
Gremlin
Посетитель
92 6 0

Недавно появилась потребность в ускорении и оптимизации пхп скриптов. Очевидно, данная задача проще всего решается с помощью вспомогательных инструментов. Погуглил, нашел apd - и довольно много статей про него. Попытался поставить - нихера не заработало - опять гуглил баги и выяснил что у многих apd не работает, и вообще этот проект не поддерживается с 2003 (!) года. В текущий момент рулит xdebug - ну не сказать что им много людей занимается, но хотя бы есть статьи 2008 года про него, и в Google Summer of Code 2008 есть связанные с ним задачи. Поставил, все заработало с первого раза.
Для пытливых умов расскажу как ставить xdebug на Fedore Core или Debian или на вообще везде, но кроме винды.
    
1 - Делаем su, чтобы стать рутом: # su, если он есть, или выполняем команды через sudo
2 - Смотрим, стоит ли phpize, если нет, устанавливаем пакет php-devel - yum install php-devel для Fedore Core или sudo apt-get install php-devel для Debian без суперюзера
3 - Проверяем, установлена ли утилита pear: # pear
4 - Если pear нет, то пишем: # lynx -source http://pear.php.net/go-pear | php а потом соглашаемся со всеми значениями по умолчанию
5 - Предпоследний штрих: #pecl install xdebug

Осталось поменять php.ini с помощью любимого текстового редактора vi: # vi /etc/php.ini, добавляя ему в конец строчки
- zend_extension=”/usr/lib/php/modules/xdebug.so”
- xdebug.profiler_enable = 1
- xdebug.profiler_output_dir = /logs/dir - поменяет папку куда будут кидаться файлы профайлов, по умолчанию - /tmp. С этим осторожно, логи разростаются очень быстро до огромных размеров

Теперь все готово, перестартовываем апач с помощью /etc/init.d/httpd restart, делаем пробные запросы к пхп страничкам, смотрим как появляются файлы логов. Если вы читали все предыдущее, то наградой вам будет ссылка на WinCacheGrind, прогу которая в винде распарсит файлики генерируемые xdebug, и вы увидите сколько раз у вас вызывалась каждая функция, в каком порядке, и сколько времени она работала. Может быть, у вас получится ускорить код. Удачи:)

Зарегистрируйтесь или авторизуйтесь что бы писать