Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Пересчет тем и сообщений в 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);

  • 2 года спустя...
Опубликовано:

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

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

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

Опубликовано:

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

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

 

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

 

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

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

 

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

#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

Опубликовано:

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

Нужно поделить частями эти 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 день) а статистика темы остается старой.

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

Опубликовано:

Если речь идет о статистике блока "Темы" нужно смотреть откуда он берет информацию. Мои запросы обновляют только количество сообщений/тем форумов и пользователей. Я не помню как происходит обновление статистики темы, но думаю что это пост с последним post_date этой темы. Соответственно его автор ид, имя и тп. Аналогично это касается и форумов. Но пересчитывать статистику десятков тысяч тем ради несколько это нонсенс. Запросы увы не напишу, давно не открывал ипб.

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

Сейчас на странице 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.