facepook
@facepook
С детства болею неизлечимым сео-даром!

Если есть, то покажи — в Wordpress, вредно ли?

Добрый вечер!

Скажите пожалуйста, я использую на страницах вордпресс условие "Если есть, то покажи" чтобы выводить дополнительные поля указанные в записи. То есть:
<?php if ( get_post_meta($post->ID, 'имя-поля', true) ) : ?>
Ляля <?php echo get_post_meta($post->ID, 'имя-поля', true) ?> - <?php the_title(); ?> лялял <?php the_title();>
<?php endif; ?>


И дело в том, что на каждой странице такое условие использую более 15 раз...
Количество просмотров страниц в месяц примерно 700к+-100к (16-27к в сутки).

В чем вопрос: Сильно ли "нагружает" данное условие сервер?
Причина вопроса: Переодически начала падать база всего сервера, помогает только перезагрузка.
VPS: - CPU2 x 2 Ггц, RAM4 Гб, Debian 7, Apache, MySQL

Заранее спасибо!
  • Вопрос задан
  • 684 просмотра
Решения вопроса 1
facepook
@facepook Автор вопроса
С детства болею неизлечимым сео-даром!
Спасибо всем за ответы.

Решил проблему сменив хостера + чуть улучшил железо.
Теперь: VDS - 8 GB RAM, 6 ядер CPU

Проблемы пропали!

PS: Последней каплей стало недоступность сайта в течении 7ми часов по причине полного падения сервера (не только базы, как было ранее)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
А есть у вас Memcached / Redis на сервере? Вообще, когда вы получаете пост / посты, то по умолчанию WP запрашивает и кеширует их метаданные. Так что все вызовы get_post_meta() внутри Loop не дают никакой нагрузки на БД, эти запросы обращаются исключительно в кеш (runtime или persistent). Так что спокойно можно использовать такой код и не беспокоиться о нем.

Что касается самого MySQL - подержите работающим хотя бы с недельку (оптимально - месяц), чтобы статистику накопить. Анализируйте - через MySQL Tuner, PHPMyAdmin, через SQLProfiler, mysqlslap, смотрите slow query log, ищите утечки памяти или залипающие запросы.
Ответ написан
Apathetic
@Apathetic
Frontend
if ( $var = get_post_meta($post->ID, 'имя-поля', true) )

и дальше с этим $var работать.
Но база падает не из-за этого, так как запросы кешируются, и нагрузки особой нет.
Ответ написан
dimasmagadan
@dimasmagadan
большую нагрузку это не даст, как писали выше, запросы кэшируются.

но, если очень беспокоитесь, можете один раз собрать все кастомные поля одним запросом в одну переменную так
$custom = get_post_custom( $post->ID );
и дальше использовать ее в своем коде на этой странице так
<?php if ( isset($custom['имя-поля']) && !empty($custom['имя-поля'][0])) : ?>
Ляля <?php echo $custom['имя-поля'][0]; ?> - <?php the_title(); ?> лялял <?php the_title();>
<?php endif; ?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы