X

XGluk

0
Репутация
0
Рейтинг
#1 Оптимизация таблицы _ratings 22 ноября 2020 в 12:38
Добрый день
Есть сайт на InstantCMS v1.10.7
База данных за годы разрослась до больших размеров
таблица _ratings занимает более 1гб там более 9млн однотипных записей с увеличение рейтинга на 1. Возможно эту таблицу почистить или как-то оптимизировать?
#2 [ЕСТЬ РЕШЕНИЕ] Не сохраняются комментарии и посты в блогах 16 августа 2018 в 16:24
В общем проблама решилась, хостер проблема в Field 'seolink' doesn't have a default value, то обычно это связано со значением переменной SQL_MODE, установил её пустой, после этого всё заработало.
Может кому пригодится.
#3 [ЕСТЬ РЕШЕНИЕ] Не сохраняются комментарии и посты в блогах 16 августа 2018 в 12:28


@XGluk, вы же сами ответили на свой вопрос: "Field 'seolink' doesn't have a default value" — Поле «seolink» не имеет значения по умолчанию
Попробуйте выполнить следующий запрос:

  1. INSERT INTO pc_blog_posts SET title = 'еапнркер',content = 'авыпрвапы',feel = '',music = '',cat_id = '0',allow_who = 'all',comments = '1',blog_id = '80',pagetitle = '',meta_keys = '',meta_desc = '',pubdate = '2018-08-11 15:26:08',user_id = '1',published = '1',content_html = 'авыпрвапы',seolink='seolink'

Кирилл Эдуардович (Странник)

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

И если причина в отсутсвии поля seolink, то как исправить ошибку? что и где перестало заполнять это поле? так как ранее никаких проблем небыло
#4 [ЕСТЬ РЕШЕНИЕ] Не сохраняются комментарии и посты в блогах 16 августа 2018 в 10:36


никаких изменений на сайте или хостинге не проводилось.

@XGluk

Так не бывает… Само по себе не сломается))
Узнайте возможно хостер проводил тех. работы.

Для начала посмотрите как вариант конфигурацию PHP ничего не изменилось? Соответствует требованию работы движка?

Rainbow

Хостер говорит что никаких работ не проводилось, сайт размещён на виртуальном сервере по нему как говорит хостер может что-то обновляться только по моей прозьбе, которой соответственно не было. Ещё хостер говорит что какой то сбой мог произойти при нехватке ресурсов сервера, что бывало при пиковых нагрузках, но ранее таких проблем не возникало и проблем в базе данных не обнаружено.

Ещё нашел в режиме отладки выдаёт ошибку при добавлении поста DATABASE ERROR:
INSERT INTO pc_blog_posts SET title = 'еапнркер',content = 'авыпрвапы',feel = '',music = '',cat_id = '0',allow_who = 'all',comments = '1',blog_id = '80',pagetitle = '',meta_keys = '',meta_desc = '',pubdate = '2018-08-11 15:26:08',user_id = '1',published = '1',content_html = 'авыпрвапы'
Field 'seolink' doesn't have a default value

при добавлении комментариев в режиме отладки ошибок не выдаёт но комментарии также не добавляются.

Может есть какой инструмент чтобы отследить где происходит ошибка?
#1 [ЕСТЬ РЕШЕНИЕ] Не сохраняются комментарии и посты в блогах 15 августа 2018 в 15:46
Не сохраняются комментарии и посты в блогах, никаких изменений на сайте или хостинге не проводилось. До этого всё работало несколько лет нормально. При этом личные сообщения, рейтинги, стены продолжают работать.
Проверил базу данных никаких проблем не обнаружил, проверил изменения в файлах тоже ничего не было.
При добавлении комментария автоматом пишет +1 но комментарий не появляется, при обновлении страницы +1 исчезает.
При добавлении поста в блог клуба отправляет на стену клуба, запись в блоге не появляется.
При этом никаких ошибок не выдаёт.
Куда копать, как выявить ошибку?
#6 Упрощение sql запросов к блогу. v1.10.7 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";


как решить проблему, пока непонятно.
#7 Упрощение sql запросов к блогу. v1.10.7 29 марта 2018 в 19:13
Ris,
Извините не увидал личку, отправил пример.

Временно решил проелему отключением вывода постов из блогов клубов на стену клуба.
#8 Упрощение sql запросов к блогу. v1.10.7 29 марта 2018 в 16:13
Ris,
Благодарю, не знал о такой функции.

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

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

Нашел файл который запрашивает эту функцию clubs/frontend.php
/////////////////////////////////////////////
//////////// ПОСТЫ БЛОГА КЛУБА //////////////
/////////////////////////////////////////////
#9 Упрощение sql запросов к блогу. v1.10.7 29 марта 2018 в 14:24
Не могу найти файл и где формируется sql запрос и сам запрос который выводит информацию из блогов клуба на стену клуба. Есть подозрение что проблема именно в этом запросе.
Подскажите, кто знает где формируется этот запрос?
#10 Упрощение sql запросов к блогу. v1.10.7 29 марта 2018 в 00:17
Осталась последняя проблема когда заходишь на стену клуб где большое число постов, то эти страницы по прежнему открываются медленно.
Пока не пойму что там тормозит, может кто подскажет как на стене клуба отключать разные блоки, чтобы выяснить в чём проблема?
#11 Упрощение sql запросов к блогу. v1.10.7 29 марта 2018 в 00:12
Благодарю всех кто помог и направил на нужный путь!
В общем методом тыка решил выше описанную задачу.
запрос выглядит так
$sql = "SELECT cat.*
FROM cms_blog_cats cat

WHERE cat.blog_id = '$blog_id'
GROUP BY cat.id";

ещё пришлось удалить вот этот запрос который считал общее количество постов при заходе в рубрики и на стене клубов.
теперь он выглядит так, надеюсь ни на что важное это не повлияет

* Получает количество постов по условиям
* @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}'"; }

Теперь блоги клубов стали просто летать!
В идеале сделать бы кеширование этих данных и функционал бы сохранился и проблема решилась, но моих знаний для этого пока недостаточно, может кто возьмётся?
#12 Упрощение sql запросов к блогу. v1.10.7 28 марта 2018 в 22:14
ideasdigger,
Попробовал вставить указанный выше код, считать перестало, но стало показывать вообще все рубрики их всех клубов разом, а не только те которые относятся к конкретному клубу.
#13 Упрощение sql запросов к блогу. v1.10.7 28 марта 2018 в 20:55
ideasdigger,
Попробовал, эта функция убирает блок категорий полностью, а мне нужно отключить подсчёт постов в них, тоесть чтобы в базу данных не было запроса на подсчёт постов в категории.
Либо сделать что-бы, блок категорий кешировался, а то получается при каждом его выводе пересчитывается всё заново, а каждый запрос сильно грузит базу данных.
#14 Упрощение sql запросов к блогу. v1.10.7 28 марта 2018 в 18:33
Поэксперементировав, выяснил что проблема не в отображении блогов в клубах, а в отображении рубрик и похоже не самих рубрик а счётчиков количества постов в них. Убрав рубрики всё начинает летать.
Где отключить подсчёт количества постов в рубриках?
#15 Упрощение sql запросов к блогу. v1.10.7 28 марта 2018 в 14:08
Ris,
С блогами сработало, всё стало летать в Опере но в Хроме почему то тормозит, хостер говорит что Добавленный индекс не используется в запросе.
Но есть такая же проблема с клубами в которых много постов, особенно тормозит при заходе в Блог клуба, в котором много постов. в Клубах где мало постов Блог клуба тормаза нет. Может возможно это решить подобным способом?
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.