Упрощение sql запросов к блогу. v1.10.7

InstantCMS 1.X

Сильная нагрузка на базу данных

#16 29 марта 2018 в 14:27
@XGluk,
Включите отладку в настройках сайта. Тогда в футере будут выводиться sql запросы с временем выполнения и функцией, которая вызвала запрос.
#17 29 марта 2018 в 16:13
Ris,
Благодарю, не знал о такой функции.

Выяснил сто проблема с запросом в файле blog.class.php
* Получает посты по условиям
* @param bool $show_all
* @param obj $ownerModel
* @return array $posts
*/
public function getPosts

Но это универсальная функция, много где используется и отключить её нельзя.

Нашел файл который запрашивает эту функцию clubs/frontend.php
/////////////////////////////////////////////
//////////// ПОСТЫ БЛОГА КЛУБА //////////////
/////////////////////////////////////////////
#18 29 марта 2018 в 16:44
@XGluk,
Вы изначально пошли не по тому пути.
Вместо того, чтобы настраивать сервер mysql (etc/my.ini) и нормально настроить индексацию базы, Вы изменяете системные файлы движка, что делать нужно только в самом крайнем случае, иначе потом ни один академик в ваших правках кода не разберется.
Я же написал Вам в личку, чтобы прислали мне самые долгие запросы из дебага.
Вы личку не читаете?
#19 29 марта 2018 в 19:13
Ris,
Извините не увидал личку, отправил пример.

Временно решил проелему отключением вывода постов из блогов клубов на стену клуба.
#20 31 марта 2018 в 01:10
Наблюдая за сайтом выявилась странная особенность, когда пользователь залогинен, то всё работает быстро, а когда не зарегистрированный пользователь то тормозит.
Тормозит именно вот этот запрос, если его убираю тормоз полностью пропадает, но тогда исчезает разбивка на страницы.
* Получает количество постов по условиям
* @param bool $show_all
* @return int
*/
public function getPostsCount($show_all = false){

$pub_where = ($show_all? '1=1': 'p.published = 1');

if(isset($this->owner)) { $pub_where .= " AND b.owner = '{$this->owner}'"; }

$sql = "SELECT 1
FROM cms_blog_posts p
INNER JOIN cms_blogs b ON b.id = p.blog_id
{$this->inDB->join}
WHERE {$pub_where}
{$this->inDB->where}
{$this->inDB->group_by}\n";


как решить проблему, пока непонятно.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.