XHprof – поиск тормозов в php

В одном из wordpress блогов столкнулся с проблемой жуткого торможения на длинных постах (примерно по 500 килобайт текста), страницы открывались по 30 - 40 секунд, а иногда не открывались до конца из-за ограничения max_execution_time. Проблема находилась не в работе Mysql, так как она возникала как при включенном, так и при выключенном плагине "File Cache", и в логе медленных запросов Mysql ничего связанного с ней не обнаружилось. Также она не была связана с форматированием контента (отключение фильтра wpautop не помогло). Найти причину помогло подключение php-расширения XHprof. Оказалось, CPU пожирала функция ereg_replace, которая использовалась в одном из плагинов. Замена её на preg_replace вполне решила проблему. Попутно выяснилось, что у функции preg_replace больше 600 вызовов на страницу, и 98% времени она работает в wptexturize (~71%) и wpautop (~27%), так что ещё есть над чем подумать в направлении улучшения работы wordpress.

Leave a Reply

Your email address will not be published. *
You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>