Вывод информации о нагрузке блога на 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.
Рекомендую также:

#1, 18 февраля, 2010 в 18:57
Спасибо, давно хотел такое у себя сделать, да руки не доходили.
Посмотрел у себя - 35 мб используется.
И не подскажите какой плагин вы используете для предпросмотра комментариев? И для вставки тегов Жирный, Курсив и тд?
#2, 18 февраля, 2010 в 19:07
и .
#3, 19 февраля, 2010 в 23:45
А не подскажите, как снизить нагрузку на сайт.
У Вас потребление минимальное, а у меня больше 20 показывает.
P.S. Шаблончик у Вас классный. Сами клепали?
#4, 20 февраля, 2010 в 07:15
типа того, основан на .
#5, 20 февраля, 2010 в 13:38
Спасибо, уменьшилось на 3 Мб. Но все равно еще 19 Мб.
Зависит это тоже от хостера?
#6, 20 февраля, 2010 в 18:02
от сервера, так как 19Мб это примерно более-менее нормально для Wordpress. кеширование нужно для PHP.
#7, 20 февраля, 2010 в 21:22
Благодарю за тему! Пригодилось.
Вот только инфо о памяти не выводит, к сожалению. Даже не знаю какой модуль за это отвечает
#8, 21 февраля, 2010 в 03:19
Доброго времени.
У меня на главной 139 / 0,420 / 36.75mb, подскажите, как определить, что так сильно загружает? Стоит супер эш плагин, захожу с другого браузера и таже песня :(
#9, 21 февраля, 2010 в 04:07
эти цифры у вас не динамические, а статические. у вас один раз заняла генерация страницы 139 запросов и 36Мб - дальше эту страницу отдает уже супер-кеш и затраты на отдачу этой статической страницы будут 0 запросов и 100Кб памяти. а счетчик по-прежнему будет показывать старые значения, потому что они закешировались вместе со страницей.
а вообще, 140 запросов к базе это явный перебор. тут у меня на главной странице не больше 35 запросов в среднем. впрочем, при плагинах кеширования на это можно наплевать.
#10, 28 февраля, 2010 в 10:06
Здравствуйте. у меня стоит кеширующий плагин 1blogcacher, там есть возможность что, если администратор открывает страницу, то отдавать ее не из кеша, а генерировать заново, так вот, потребление памяти стоит на отметки 23 мб, как еще оптимизировать?
#11, 28 февраля, 2010 в 10:26
зачем вообще при использовании плагинов кеширования оптимизировать вордпресс? смысла нет ни малейшего - без разницы сколько запросов и сколько памяти будет расходоваться при одноразовом создании страницы, если в дальнейшем она кешируется и будет отдаваться из кеша.
#12, 28 февраля, 2010 в 10:45
А можно реально посмотреть работает ли указаный мною плагин или нет?
меня смущает то, что при открытии блога администратором создается подобная нагрузка.
#13, 28 февраля, 2010 в 11:02
я не в курсе работает у вас плагин или нет, но практически все плагины кеширования не кешируют страницы из админки блога. а насчет нагрузки - 23Мб это вполне нормальная нагрузка в админке для блога на wordpress. с учетом того, что сам блог у вас отдается из кеша - любая нагрузка админки не имеет практически никакого значения.
#14, 11 марта, 2010 в 19:27
вставил в блог, ошибка=
Fatal error: Call to undefined function usage() in бла бла бла /footer.php on line 6
P.S. как я понимаю ошибка в том что он не видит её в функции, НО! она там есть. и была проблема раньше потом х3 поч прекратилась и опять, добавляю функции, а место вызова их появляються ошибки помогите что делать =(
кодировка и т.д. пробовал не помогает. что я ещё мог пропустить
#15, 13 марта, 2010 в 00:33
неправильно вставили код в файл functions.php, только в таком случае функция не будет найдена.
#16, 13 марта, 2010 в 04:23
А у меня почему-то появилась инфа и в футере внизу где и должна и в сайдбаре справа -
Либо в ближайшие часы дождусь вашего ответа, либо снесу код/заменю на невидимый
#17, 13 марта, 2010 в 12:43
ну я не знаю, что тут сказать - проверьте где именно вы поставили вывод функции.
#18, 13 марта, 2010 в 13:51
нет нет) я умею сатвлять правельно. дело в том что не работает выдаёт ошибку. вот смотри, файл функции начинается где ошибка?
большое спасибо за внимание.
#19, 13 марта, 2010 в 20:17
что где начинается? ты уверен, что функцию ты вставил именно в файл functions.php, который находится внутри папки шаблона?
#20, 13 марта, 2010 в 22:50
конечно) пример:
functions.php (в корне папке с шаблоном)
ведь так?)
а мне в шаблоне выдаёт ошибку-
строчка 6:
после идёт вызов функции и
Но!!
я не пойму что это( странно ведь я сам делаю шаблон с нуля. Если удалить этот лишний не понятный код полностью появляется всеравно та же ошибка. мб нужно позже обновить данные сразу не обновляются, но странно поч система может тормозить если не загруженна. хостинг джино.
вот весь код футера вместе с непонятным кодом:
Буду безумно благодарен если поможете, все пробовал. и другую сборку и настройки хостинга. не понимаю поч так =(((
T_T пойду спать... утром отпишусь мб ушла проблема. Эх.... все время на какие то камни нарываюсь при создании чего либо.
Большое спасибо.
#21, 13 марта, 2010 в 22:52
омг. и код не отображает.
#22, 14 марта, 2010 в 09:58
предпросмотром пользоваться никак?
я бы и рад помочь, но я не понимаю, что у вас и как сделано.
#23, 3 апреля, 2010 в 22:57
а я вот немножечко не понимаю,о каком файле functions.php вы говорите. о том, который находится в папке www\wordpress\wp-content\themes\ или в папке www\wordpress\wp-includes ?
#24, 4 апреля, 2010 в 10:28
о том, что лежит в папке шаблона, конечно. а если нет - то его надо создать.
#25, 13 апреля, 2010 в 08:35
Спасибо всё получилось)))
#26, 18 апреля, 2010 в 14:47
Спасибо большое! Все получилось, очень интересная статья!))
#27, 26 апреля, 2010 в 13:14
Здравствуйте.
Подскажите, пожалуйста, как Вам удалось снизить потребление оперативной памяти на блоге до 3 МБ ?
Я думаю, что это не такой большой секрет, который необходимо хранить вечно.
Спасибо :)
#28, 5 июня, 2010 в 00:10
А не проще такой код в футере прописать:
И все будет видно.
#29, 29 июля, 2010 в 13:32
Вот спасибо, замечательно расписано! То, что мне было нужно, сейчас проверю нагрузки.
#30, 29 июля, 2010 в 16:44
А ещё так можно
#31, 27 августа, 2010 в 12:09
Штирлиц, вы вообще какой-то неадекватный. Ваша тема кривая, а не код.