Добрый день уважаемые знатоки wordpress!
Вот столкнулся с проблемой… мой сайт черезмерно нагружал хостинг и нам прямым текстом сказали сворачиваться.
Подключив к работе нескольких знакомых начали разбираться как и почему происходит огромная нагрузка на сервер.
Оказалось что движок генерирует массу интересных запросов.
Например:
У меня на сайте выводится 15 новостей в формате
Заголовок = ссылка на статью
Анонс статьи (то что до more)
При просмотре лога базы оказалось что wordpress сразу загружает весь текст статьи уже на этом этапе, так что получается у меня кроме всего прочего из базы каждый раз выгружается полная информация о 15 статьях включая их содержание.
Подумав решили что нам в принципе не надо выгружать содержание статьи при выводе их списком (можно ведь анонс статьи вписывать в поле post_excerpt) и полезли в код…
версия wordpress 2,2,3.
файл \wp-includes\query.php
Заменяем строку
$fields = apply_filters('posts_fields', "$wpdb->posts.*");
на
$fields = "ID, post_author, post_date, post_date_gmt, post_title, post_category, post_excerpt, post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, post_parent, guid, menu_order, post_type, post_mime_type, comment_count";
а строку
$request = " SELECT $found_rows $distinct $fields FROM $wpdb->posts $join WHERE 1=1 $where $groupby ORDER BY $orderby $limits";
на
$request = " SELECT $distinct $fields FROM $wpdb->posts $join WHERE 1=1 $where $groupby ORDER BY $orderby $limits";
теперь мы выгружаем все данные кроме поля post_content таблицы wp_posts
на данном этапе вроде все нормально, но вот возникла проблема этот же запрос используется для выведения статьи… соответственно текста статьи мы не видим…
Отсюда вопрос- может кто-то уже с этим сталкивался и знает решение?
Заранее спасибо за любую помощь.
Не могут 15 статей загрузить сервер если они меньше Войны и Мира в сумме.
Меняйте хостера. GoDaddy за 7 долларов держит до 5 тысяч посетителей в сутки легко (не считая моего вечно загруженного "Видео гола" – не удаётся побороть leeching)
Тогда может скажешь откуда у меня такая нагрузка на базу и память на vds забита дальше некуда?
Вобщем эксперименты продолжаются…
Нарыл в файле query.php строки которые формируют запрос… и поставил условие… вопрос в том насколько оно правильно объявлено… так как в админке теперь не показываются номера страниц при просмотре закладки "Управление"
В итоге получается что полный текст статьи типа выбирается только на странице просмотра статьи..
Вобщем крайне нуждаюсь в советах людей знающих пхп и ориентирующихся в дебрях кода wordpress… нужно проверить насколько правильно использовать такой вариант запроса…
Я в php чайнег, поэтому помочь дельно не смогу, но за обсуждением буду следить с интересом!
А это хоть как-то помогло? Мне например никак не помогло изменение количества новосте на главной, что 5 что 15 один х.
Неужели может помочь обновление до 2.5? Сейчас попробую поставить этот супер-кеш или как его там
дак что у вас за VDS такой?
сколько посетителей?
поставьте кэш и если сайт обновляется не часто – побольше время жизни кэша выставьте.
Если цель оптимизировать движок – то это не поможет, можете и не париться. Ибо чушь еси.
Если цель лучше понять, как устроен WP и как работает MySQL – тогда можно ставить опыты, польза будет.
Attlant, можно конечно потратить кучу времени на оптимизацию WP и прийти к определенным результатам. Но что-то мне говорит о том что ты не настраивал Apache на своем VDS, для виртуального хостинга в этом даже вопроса не стоит, а вот для VDS весьма актуально.
Вот статья по теме – http://www.salex.ru/book/book.php?httpd_prefork Там подробно описано что нужно настраивать для урегулирования нагрузки на память и бд.
Результаты такой настройки при верном подборе нужных параметров сокращают расход памяти и кл-во запросов к бд в разы.