Вывод информации о нагрузке блога на WordPress
В последнее время меня стали спрашивать о том, как я вывожу в футере информацию о нагрузке блога при генерации страницы. Я имею ввиду число запросов к MySQL базе, время генерации страницы и число затраченной на это памяти. В основном, конечно, спрашивают о памяти, так как код показа числа запросов и времени генерации встроен в дефолтный шаблон WordPress, хоть по умолчанию и закомментирован. Сразу скажу, что память считается функцией memory_get_usage и я понятия не имею, как именно она работает. Скажем, не секрет, что последние версии WordPress даже при выделенных 32Мб памяти частенько не хотят работать, а поэтому число, выводимое функцией memory_get_usage ставит меня в тупик: во-первых, на локальном сервере функция выводит число потребляемой памяти раза в 4 большее, чем на хостинге и, во-вторых, в любом случае это число меньше 32Мб, без которых WordPress по сути работать не хочет. Вероятно, использование функции зависит от каких-то настроек сервера, но все мои поиски информации об этом не принесли никакого результата. Но, тем не менее, выводимое число потребляемой памяти можно использовать, как абстрактную величину: скажем, можно оценить насколько вырастает потребление памяти при включении какого-то плагина или генерация каких страниц блога у вас затрачивает наибольшее количество памяти.
Откройте файл functions.php вашего шаблона и добавьте туда код:
function usage() { printf(('%d / %s'), get_num_queries(), timer_stop(0, 3)); if ( function_exists('memory_get_usage') ) echo ' / ' . round(memory_get_usage()/1024/1024, 2) . 'mb '; } add_action('admin_footer_text', 'usage');
После этого в админке вашего блога в футере автоматически появится информация о количестве запросов к базе, времени генерации страницы и числе затраченной памяти. Если вы хотите, чтобы данная информация автоматически добавлялась и в футер самого блога, то вам нужно добавить в файл functions.php еще одну строчку:
add_action('wp_footer', 'usage');
Только убедитесь, что в файле footer.php вашего шаблона есть вызов функции wp_footer(), без нее автоматическое добавление работать не будет. Но я бы вам посоветовал вручную вставить нужный код в файл footer.php - тем самым вы можете управлять тем, как будет выглядеть эта информация в футере. Для этого добавьте туда что-то типа:
<small><?php usage(); ?></small>
Если вы не хотите, чтобы данная информация показывалась всем посетителям блога, то вам надо изменить код на:
<?php if (current_user_can('level_10')){ ?> <small><?php usage();?></small><?php } ?>
И теперь только авторизированные администраторы блога смогут увидеть информацию о нагрузке на блог.
В процессе тестирования потребляемой блогом памяти я перепробовал все четыре найденных мной плагина с подобной функциональностью. Все они используют для подсчета потребляемой памяти функцию memory_get_usage и выдаваемые этими плагинами значения практически не отличаются друг от друга. Все та же непонятная разница в цифрах на локальном сервере и у хостера. Исходя из этого никакой нужды в использовании плагинов в данном случае нет - если 2 строчки кода делают тоже самое, что и большие плагины, то какой в них смысл? Красивая полоска-индикатор потребляемой памяти ничем не лучше вывода текстового значения.
Я все же надеюсь, что найдется кто-нибудь, кто сможет мне объяснить, как именно работает функция memory_get_usage и сколько в действительности потребляет памяти блог на WordPress.
Рекомендую также:

#31, 27 августа, 2010 в 12:09
Штирлиц, вы вообще какой-то неадекватный. Ваша тема кривая, а не код.
#32, 29 сентября, 2010 в 16:55
Не знаю в чем причина но у меня показывает 27 мб. При этом стоит 7 плагинов и я бы не сказал что они какие то тяжелые. Странно это все
#33, 9 октября, 2010 в 20:34
В IE8 не отображается(((
#34, 16 октября, 2010 в 15:02
eaccelerator для php и этот плагин. вот и 3мб памяти всего.
где в этом коде использованная память?
#35, 16 октября, 2010 в 15:05
очень уж много, столько быть не должно.
в IE8 не отображается, а в других браузерах отображается? это же php код с выводом обычного текста. если не отображается, то значит это вы пихнули этот код не туда, куда надо. или в IE8 вы просто не авторизованы, а код показывается только админам. или еще что, проверяйте.
#36, 24 января, 2011 в 17:52
Поставил себе отображение нагрузки, но вот не пойму где его мона отредактировать?, в плане чтобы отображение было по центру окуратненько...всего 14мб.
Кстати нагрузка не большая, всего
в footer.php не добавлял.
#37, 30 января, 2011 в 10:14
ну заверните вызов функции в див, например так:
а в style.css добавьте что-то типа:
ну и так далее.
#38, 15 февраля, 2011 в 04:08
Спасибо за статью, сделал у себя на сайте. Был удивлен показателями, в среднем 10мб показывает
#39, 15 февраля, 2011 в 04:10
причем в редких случаях показывает то 7мб то 26мб
#40, 8 апреля, 2011 в 17:50
Полезная статья ещё и тем что люди в комментах поделились реальными данными о нагрузки, я вот заметил что если пользоваться wordpress меню к примеру что есть в теме twentyten (подвальная зона виджетов) и туда вставить произвольное меню(заполнить все 4 колонки ) то это создаёт просто дофига запросов к базе у меня + 22 запроса (наверно зависит от кол-во пунктов меню) но по моему это перебор...
#41, 28 мая, 2011 в 13:49
У меня выдал 44 мегабайта - я чуть со стула не упал)))
#42, 18 июня, 2011 в 13:56
Flector, а реально eaccelerator на виртуальных хостинг прикрутить (не VDS!) ?
#43, 22 сентября, 2011 в 23:00
Класс, было 25Mb, а стало 22Mb. Хоть как-то разгрузил. Спасибо.
#44, 14 ноября, 2011 в 15:33
Спасибо за код)
Заметил одну вещь: у разных хостеров один и тот же сайт использует разное количество памяти. После переезда загрузка памяти упала с 32 Мб до 4 Мб. Единственное что изменилось, на старом хостинге был FreeBSD, теперь Windows Server.