Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
avtobus

Пересчет тем и сообщений в IPS 4

Рекомендованные сообщения

Вечер в хату!

Уважаемые, подскажите как переcчитать количество сообщений у тем и пользователей? Я тут ковырялся в бд и видимо кривыми руками сбросил статистику сообщений у всех пользователей, подскажите добрые люди если не сложно как перестроить статистику sql запросом? Будут признателен за вашу помощь.

 

ПС.

Нашел старые запросы для тройки, но они не подходят для 4.x

Поделиться сообщением


Ссылка на сообщение

Пересчет сообщений пользователей:

 

UPDATE core_members m 
LEFT JOIN ( SELECT author_id, COUNT(*) as posts FROM forums_posts WHERE queued=0 GROUP BY author_id ) z ON m.member_id=z.author_id 
SET m.member_posts=IFNULL(z.posts, 0);

Пересчет сообщений в темах:

 

UPDATE forums_topics t 
LEFT JOIN( SELECT topic_id, COUNT(*) as posts FROM forums_posts WHERE queued=0 GROUP BY topic_id ) z ON z.topic_id=t.tid 
SET t.posts=IFNULL(z.posts, 0);

Пересчет тем и сообщений в форумах:

 

UPDATE forums_forums f 
LEFT JOIN ( SELECT forum_id, COUNT(*) as topics, SUM(posts) as posts FROM forums_topics GROUP BY forum_id ) z ON z.forum_id=f.id 
SET f.topics=IFNULL(z.topics, 0), f.posts=IFNULL(z.posts, 0);

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
11/17/18 21:59 (изменено)

Нужна помощь ребят!

Не работает эти SQL а именно, пересчет пользователей и пересчет сообщений в темах!

Изменено пользователем tunofak

Поделиться сообщением


Ссылка на сообщение

пересчет пользователей

Где Вы прочитали об этом? Нет запроса для пересчета юзеров.

 

Если речь идет о первом запросе, то в 4-ке есть инструмент для этого http://ipbskins.ru/forum/topic15749.html/page__view__findpost__p__105422

 

и пересчет сообщений в темах!
Как определили? Запрос рабочий.

Поделиться сообщением


Ссылка на сообщение
11/19/18 04:44 (изменено)

Я имел ввиду пересчет сообщений пользователя)

 

Возможно проблема у хостинга, пишет ошибку, при выполнении запроса

#1104 - The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay

Решается изменением строки max_join_size в конфиге. По стандарту она у меня стоит на max_join_size 2000000 А нужно поставить на милиард или более. Попробовал командой SET GLOBAL max_join_size=1844674407315; Выходит ошибка #1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation - У меня нету супер привелегий, посмотрел в панели хостинга, все права которые должны быть у меня есть. Получается суперправа может выдать или хостинг или вручную сам поменять конфиг.

Изменено пользователем tunofak

Поделиться сообщением


Ссылка на сообщение
11/19/18 07:44 (изменено)

В общем проблему понял.

Нужно поделить частями эти SQL запросы, чтобы не было большого запроса сразу в MySQL.

как в АЦ на версии 3.х.х Можно выбрать, по сколько строк обновлять за 1 запрос.

 

А также пересчет не совсем правильный идет.

У меня сообщения распределяются по времени, а не по ID

А в темах, последнее сообщение выбирает, сообщение по последнему ID.

У меня темы многие они связанны и там уже по времени расставлены сообщения.

Поэтому в последнее сообщение выходят сообщения, которые не являются последним по времени, они последние по ID

Изменено пользователем tunofak

Поделиться сообщением


Ссылка на сообщение

Нужно поделить частями эти SQL запросы, чтобы не было большого запроса сразу в MySQL.

как в АЦ на версии 3.х.х Можно выбрать, по сколько строк обновлять за 1 запрос.

Я же ссылку дал на пост, где есть скрин с указанием инструмента.

 

А также пересчет не совсем правильный идет.

У меня сообщения распределяются по времени, а не по ID

В запросах не обновляются данные о последних постах.

В 1-ом запросе обновляется кол-во контента юзеров

Во 2-ом запросе - кол-во постов в темах

В 3-м запросе - кол-во тем и постов в форумах

Поделиться сообщением


Ссылка на сообщение

Про инструмент я знаю :)

 

Мне нужно, чтобы в форумах и темах, обновлялась последнее сообщение.

Делом в том, что я меняю даты/открываю скрытые сообщения, через запросы в MySQL

Я на 3.4.6 делал пересчет тем/форумов и у меня обновлялись информация о последнем сообщении в форумах и темах.

Информация указывается такая - ID автора, Имя автора, уменьшенный аватар автора, ID страницы в теме(последняя должна быть), дата темы. Все кликабельно.

 

1193896be2c3.jpg

Поделиться сообщением


Ссылка на сообщение

Нажмите на скрыть пост, а после показать. При скрытии/показе поста обновляется статистика

Поделиться сообщением


Ссылка на сообщение

Да знаю :)

Дело в том, что я подумал как сделать отложенную публикацию Тем/Сообщений.

Смысл работы Отложенной публикации в том, что подготовленные темы/сообщения, переносятся в будущее на дни и месяцы.

Далее все темы/сообщения от СЕЙЧАС скрываются. Вот таким SQL запросом:

UPDATE `forums_posts`
SET `queued` = -1
WHERE `post_date` > UNIX_TIMESTAMP();

UPDATE `forums_topics`
SET `approved` = 0 
WHERE `start_date` > UNIX_TIMESTAMP();

 

Внимание! При таком запросе удаленные сообщения, могу перейти в скрытые. Поэтому удаляю сообщения которые находятся в удаленных, вот таким запросом:

DELETE FROM `forums_posts`
WHERE `queued` = -2;

DELETE FROM `forums_topics`
WHERE `approved` = -2;

 

И чтобы отложенные публикации действовали, я выполняю запрос SQL:

UPDATE `forums_posts`
SET `queued` = 0
WHERE `post_date` < UNIX_TIMESTAMP();

UPDATE `forums_topics`
SET `approved` = 1 
WHERE `start_date` < UNIX_TIMESTAMP();

Данный SQL запрос можно выполнять каждый день/час/минуту и у тебя будут выводится сообщения из скрытых.

 

Система такая работает! Но вот каждый пост вручную открывать/скрывать, это тяжело.

 

Может кто поможет, даже за $ сделать такой запрос? Можете потом оформить тему или создать хук, но хук стоящий.

Поделиться сообщением


Ссылка на сообщение

Я имел ввиду пересчет сообщений пользователя)

 

Возможно проблема у хостинга, пишет ошибку, при выполнении запроса

#1104 - The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay

У вас слишком большое количество пользователей или сообщений. В этом случае обновление статистики лучше сделать по частям из скрипта.

Поделиться сообщением


Ссылка на сообщение

Да знаю

Дело в том, что я подумал как сделать отложенную публикацию Тем/Сообщений.

Смысл работы Отложенной публикации в том, что подготовленные темы/сообщения, переносятся в будущее на дни и месяцы.

 

Тогда вам проще обновить статистику только тех форумов которых данные запросы касаются. Прежде чем выполнять update таблиц, сделайте запрос на select с аналогичными условиями и смотрите кого и сколько записей соответсвует запросу. Обновлять каждый час всю статистику выше приведенными запросами на большом форуме слишком накладно. И сам форум никогда таким образом стату не обновляет. Эти запросы создавались для быстрого и одноразового использования где производились ручные манипуляции с бд.

Поделиться сообщением


Ссылка на сообщение

Помогите с запросом SQL.

Я запросы в SQL пишу чуть по другому, через галочки.

Поэтому совместить эти запросы через SELECT не много не понятно будет, особенно я не понимаю forums_topics t , тут стоит ровно или просто пробел.

В общем, мне нужно сделать пересчет тем, при условии `forums_topics`.`posts` > 1 (Темы в которых больше одного сообщения, уменьшает список) И разделить их на части, на форуме 80000 тем, есть темы которые будут публиковаться допустим через месяц/год и в них же идет обсуждение. Получается выбирать конкретные темы, будет тяжело, в день публикуется по 10-30 тем и в них же, опять будут публиковаться сообщения.

Поделиться сообщением


Ссылка на сообщение

Честно говоря не понимаю из-за чего столько возни. Если эти темы существуют на форуме какой смысл пересчитывать статистику, пусть даже они и будут опубликованы через год. Не удаляйте темы форума запросами, пусть это форум сделает сам, тогда ничего пересчитывать не придется.

Поделиться сообщением


Ссылка на сообщение

Статистика Темы берется из последнего сообщения, последнее сообщение за 2020 год.

Сообщения и Темы до СЕГОДНЯ скрываются, Статистика как осталась за 2020 год так и будет, пока пересчет тем/сообщений не сделаешь.

Вручную все темы поправил Скрыть/открыть.

Потом опять открываешь скрытые темы до СЕГОДНЯ (130 сообщений и 30 тем за 1 день) а статистика темы остается старой.

Поэтому и нужно Обновление статистики.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...