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

#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
А ещё так можно