WordPress Россия

Вывод информации о нагрузке блога на WordPress

Добавлено 10 марта 2010 в категорию Плагины.

Вывод информации о нагрузке 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.

Категории