Пересчет тем и сообщений в IPS 4 - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

СвернутьПрикрепленные теги

sql запросы

  • 2 Страниц +
  • 1
  • 2

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

#1 Пользователь не на сайте   avtobus ответил: »

 
 
  • Newbie
  • *
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 9
  • Регистрация: 14-Ноябрь 16
  • Репутация: 6
  • IPB version:4.1.x
 

Отправлено 17 Ноябрь 2016 - 20:29

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

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

#2 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 484
  • Регистрация: 20-Март 09
  • Репутация: 2 557
  • IPB version:3.1.x
 

Отправлено 17 Ноябрь 2016 - 21:28

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

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);

1

#3 Пользователь не на сайте   tunofak ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 11-Март 16
  • Репутация: 0
  • IPB version:4.0.x
 

Отправлено 17 Ноябрь 2018 - 23:59

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

Сообщение изменено: tunofak (18 Ноябрь 2018 - 00:02)

0

#4 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 4 094
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 602
  • IPB version:I have no IPB
 

Отправлено 18 Ноябрь 2018 - 10:48

Просмотреть сообщениеtunofak сказал(а):

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

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

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

Цитата

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

#5 Пользователь не на сайте   tunofak ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 11-Март 16
  • Репутация: 0
  • IPB version:4.0.x
 

Отправлено 19 Ноябрь 2018 - 06: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 (19 Ноябрь 2018 - 07:53)

0

#6 Пользователь не на сайте   tunofak ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 11-Март 16
  • Репутация: 0
  • IPB version:4.0.x
 

Отправлено 19 Ноябрь 2018 - 09:44

В общем проблему понял.
Нужно поделить частями эти SQL запросы, чтобы не было большого запроса сразу в MySQL.
как в АЦ на версии 3.х.х Можно выбрать, по сколько строк обновлять за 1 запрос.

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

Сообщение изменено: tunofak (19 Ноябрь 2018 - 09:48)

0

#7 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 4 094
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 602
  • IPB version:I have no IPB
 

Отправлено 19 Ноябрь 2018 - 11:11

Просмотреть сообщениеtunofak сказал(а):

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

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

Просмотреть сообщениеtunofak сказал(а):

А также пересчет не совсем правильный идет.
У меня сообщения распределяются по времени, а не по ID

В запросах не обновляются данные о последних постах.
В 1-ом запросе обновляется кол-во контента юзеров
Во 2-ом запросе - кол-во постов в темах
В 3-м запросе - кол-во тем и постов в форумах
0

#8 Пользователь не на сайте   tunofak ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 11-Март 16
  • Репутация: 0
  • IPB version:4.0.x
 

Отправлено 20 Ноябрь 2018 - 08:40

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

Мне нужно, чтобы в форумах и темах, обновлялась последнее сообщение.
Делом в том, что я меняю даты/открываю скрытые сообщения, через запросы в MySQL
Я на 3.4.6 делал пересчет тем/форумов и у меня обновлялись информация о последнем сообщении в форумах и темах.
Информация указывается такая - ID автора, Имя автора, уменьшенный аватар автора, ID страницы в теме(последняя должна быть), дата темы. Все кликабельно.

-IMG-
0

#9 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 4 094
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 602
  • IPB version:I have no IPB
 

Отправлено 20 Ноябрь 2018 - 09:05

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

#10 Пользователь не на сайте   tunofak ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 11-Март 16
  • Репутация: 0
  • IPB version:4.0.x
 

Отправлено 20 Ноябрь 2018 - 09:46

Да знаю :)
Дело в том, что я подумал как сделать отложенную публикацию Тем/Сообщений.
Смысл работы Отложенной публикации в том, что подготовленные темы/сообщения, переносятся в будущее на дни и месяцы.
Далее все темы/сообщения от СЕЙЧАС скрываются. Вот таким 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 запрос можно выполнять каждый день/час/минуту и у тебя будут выводится сообщения из скрытых.

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

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

#11 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 484
  • Регистрация: 20-Март 09
  • Репутация: 2 557
  • IPB version:3.1.x
 

Отправлено 20 Ноябрь 2018 - 14:22

Просмотреть сообщениеtunofak сказал(а):

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

Возможно проблема у хостинга, пишет ошибку, при выполнении запроса
#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

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

#12 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 484
  • Регистрация: 20-Март 09
  • Репутация: 2 557
  • IPB version:3.1.x
 

Отправлено 20 Ноябрь 2018 - 15:04

Просмотреть сообщениеtunofak сказал(а):

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


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

#13 Пользователь не на сайте   tunofak ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 11-Март 16
  • Репутация: 0
  • IPB version:4.0.x
 

Отправлено 20 Ноябрь 2018 - 16:17

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

#14 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 484
  • Регистрация: 20-Март 09
  • Репутация: 2 557
  • IPB version:3.1.x
 

Отправлено 20 Ноябрь 2018 - 17:22

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

#15 Пользователь не на сайте   tunofak ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 11-Март 16
  • Репутация: 0
  • IPB version:4.0.x
 

Отправлено 20 Ноябрь 2018 - 18:45

Статистика Темы берется из последнего сообщения, последнее сообщение за 2020 год.
Сообщения и Темы до СЕГОДНЯ скрываются, Статистика как осталась за 2020 год так и будет, пока пересчет тем/сообщений не сделаешь.
Вручную все темы поправил Скрыть/открыть.
Потом опять открываешь скрытые темы до СЕГОДНЯ (130 сообщений и 30 тем за 1 день) а статистика темы остается старой.
Поэтому и нужно Обновление статистики.
0

Сообщить об этой теме:


  • 2 Страниц +
  • 1
  • 2


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2019 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна