Вывод информации о нагрузке блога на 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.
Понравился пост? Подпишись на обновления по RSS или Twitter !
#41,
У меня выдал 44 мегабайта - я чуть со стула не упал)))
#42,
Flector, а реально eaccelerator на виртуальных хостинг прикрутить (не VDS!) ?
#43,
нереально, если к нему не дает доступ сам хостер. но у многих хостеров его можно врубить одной галкой, надо узнавать у хостера.
#44,
Класс, было 25Mb, а стало 22Mb. Хоть как-то разгрузил. Спасибо.
#45,
Спасибо за код)
Заметил одну вещь: у разных хостеров один и тот же сайт использует разное количество памяти. После переезда загрузка памяти упала с 32 Мб до 4 Мб. Единственное что изменилось, на старом хостинге был FreeBSD, теперь Windows Server.
#46,
А у меня почему -то рушится админка и сайт заодно, после того, ка вставляю код :( В чем может быть ошибка?
#47,
в неправильной вставке кода?
больше ничего на ум не приходит - у меня на всех сайтах код работает и никаких проблем с ним не возникает.
проверяйте как и куда вставили код - может вы код в какую функцию вставили, надо отдельно.
#48,
Я в этом полный чайник, вероятно, что неправильно.
А как правильно?
Копирую у вас код, а дальше...?Куда его вставить, в начале, в конце, или в определенном месте? Нужно ли добавлять конкретно для этого кода?
#49,
вставить надо так, чтобы не задеть другие функции в functions.php - проще всего вставлять перед самым концом файла, перед знаком ?>.
#50,
Ура! заработало. А 40 mb для молодого практически не посещаемого блога - это много?
#51,
очень. лицевая часть блога должна "есть" не больше 20мб, а админка не больше 32мб. но для не посещаемого сайта это без разницы.
#52,
Первое - это запросы? Второе - время, а третье - это память?
#53,
именно так, мне казалось, что это очевидно :)
#54,
Вставьте такой код в функции WP:
Выводите там где вам надо так:
#55,
это описано в статье, какие-то проблемы?
#56,
А как можно снизить потребление памяти если WPLANG утратил актуальность?
#57,
Pure PHP Localization + Hyper Cache
#58,
только кэширующими плагинами для php - вроде eaccelerator, APC и тому подобных. или кеширующими плагинами для самого движка - но это уже из другой оперы немного (так как на память это мало влияет).