Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Страницы 1
Тема закрыта
Возникла такая фигня:
Развивается тема 1-2-3-4 страничка, и растет дальше... на днях появилась 8ая, захожу посмотреть что новенького написали -пусто. Постов на 8ой страничке вообще нет. 7ая есть все нормально. Если набить 7ую чтобы она "перевалила" на 8 -8 будет заполнена. И все как должно быть. Вобщем пун считает что страниц 8 хотя на самом деле их 7. Попробовал перестроить индекс -нифига. Вобщем-то не мешает, но странно как-то, продолжаю искать причины. Еще скрин прилепил чтобы понятнее было о чем я.
Удалил несколько постов(3шт) на 7ой -8ая пропала, вобщем какой то счетчит внутри сьехал - как бы так посмотреть где он вообще и поправить если что (Хорошо бы если только на эту тему и как зараза не расползлась)
Редактировался Dayset (2007-10-26 14:22:13)
Dayset
Такая же хрень бывает
После удаления постов желательно воспользоваться плагином Forum cleanup: Synchronise topic reply counts.
Клинап переодически делаю -раза 2 в неделю, хмм даже и не вспомню - делал тогда или только индекс перестраивать зарядил.
Аналогичная проблема возникла в топике где более 200 страниц.
Решение на punbb.org не нашел - хотя тема подымалась.
Похоже, что неправильно работает механизм определения количества страниц.
механизм подсчета количества страниц полагается на счетчик в поле topics.num_replies
$num_pages = ceil(($cur_topic['num_replies'] + 1) / $pun_user['disp_posts']);
счетчик может сбиться после какого-то облома, но он заново вычисляется (!!!) после каждого добавления в тему
и после каждого удаления из темы.
типа вот так:
SELECT COUNT(id) FROM '.$db->prefix.'posts WHERE topic_id='.$topic_id
если похерится индекс в таблице topics то, наверное, запрос может наврать, но при таком раскладе мы и в самой теме потеряем сообщения мы их не увидим во viewtopic, потому что сами посты добывается по такому же условию topic_id=###
то есть мы снова получим "реальное" количество страниц...
шайтан!!!
а может это проблема родственная "раздвоению постов" и "посетителей" - когда один пользователь виден online в двух экземплярах и посты его двоятся в этот момент, в такой момент счетчик не соответствует тому что видишь...
Может проблема в DB, точнее в типе таблиц MyISAM. Может есть смысл использовать InnoDB + транзакции?
Не помогло.
Редактировался d-linux (2007-11-28 11:19:33)
Похоже проблема в этом запросе:
mysql> SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM posts AS p INNER JOIN users AS u ON u.id=p.poster_id INNER JOIN groups AS g ON g.g_id=u.group_id LEFT JOIN online AS o ON (o.user_id=u.id AND o.idle=0) WHERE p.topic_id=611 ORDER BY p.id LIMIT 7400,50;
Empty set (0.26 sec)
Отсюда и пустая страница.
Тот же запрос для проверки в упрощенном виде дает другие результаты:
select id from posts where topic_id='611' limit 7400,50;
+--------+
| id |
+--------+
| 104272 |
| 104285 |
| 104290 |
| 104291 |
+--------+
4 rows in set (0.00 sec)
Кто*нибудь может понять почему в верхнем запросе пропадают посты?
Помогло изменение INNER JOIN на LEFT JOIN - хотя я не знаю, на сколько это корректно в этом запросе.
Редактировался d-linux (2007-11-29 11:37:17)
попробуй для эксперимента заменить INNER JOIN на LEFT JOIN сначала для users, затем для groups.
судя по всему, проблема в отсутствии записи там или там.
попробуй для эксперимента заменить INNER JOIN на LEFT JOIN сначала для users, затем для groups.
судя по всему, проблема в отсутствии записи там или там.
Если только для users или только для groups LEFT JOIN то пустые страницы, когда для users и groups одновременно LEFT то все ок.
Редактировался d-linux (2007-11-29 11:46:48)
какой-то юзер некорректно удален?
принадлежащие ему посты не удалены и не помечены как сообщения гостя - когда все штатно делается, то делается одно из двух, а тут похоже сбой. осталось вычислить эти записи
какой-то юзер некорректно удален?
принадлежащие ему посты не удалены и не помечены как сообщения гостя - когда все штатно делается, то делается одно из двух, а тут похоже сбой. осталось вычислить эти записи
Похоже вот этот запрос показывает удаленных пользователей, у которых остались сообщения:
SELECT p.id,p.topic_id, p.poster AS username, p.poster_id FROM posts AS p LEFT JOIN users AS u ON u.id=p.poster_id WHERE u.id IS NULL;
результат у меня
+-------+----------+---------------------------------+-----------+
| id | topic_id | username | poster_id |
+-------+----------+---------------------------------+-----------+
| 57675 | 3551 | blink | 1068 |
| 57740 | 3552 | Psychild | 1070 |
| 58193 | 122 | Anonymous | 1077 |
| 58214 | 122 | Anonymous | 1077 |
| 58227 | 122 | Anonymous | 1077 |
| 58246 | 122 | Anonymous | 1077 |
| 58254 | 122 | Anonymous | 1077 |
| 58661 | 122 | Anonymous | 1077 |
| 58768 | 122 | Anonymous | 1077 |
| 59003 | 122 | Anonymous | 1077 |
| 59123 | 122 | Anonymous | 1077 |
| 59127 | 122 | Anonymous | 1077 |
| 59132 | 122 | Anonymous | 1077 |
| 60185 | 122 | Anonymous | 1077 |
| 60319 | 122 | Anonymous | 1077 |
| 63998 | 3707 | emokid | 1112 |
| 64256 | 3707 | emokid | 1112 |
| 64259 | 3707 | emokid | 1112 |
| 64561 | 3707 | emokid | 1112 |
| 64564 | 3707 | emokid | 1112 |
| 64851 | 3707 | emokid | 1112 |
| 64859 | 3707 | emokid | 1112 |
| 64861 | 3707 | emokid | 1112 |
| 65006 | 3137 | Shut | 973 |
| 67708 | 611 | Печенюшка | 1149 |
| 67711 | 611 | Печенюшка | 1149 |
| 81525 | 611 | Shinoda | 1274 |
| 82971 | 611 | Брутальная СаМка | 1301 |
| 83324 | 4306 | skyll | 1309 |
| 85537 | 4370 | Romantik | 1351 |
| 86028 | 4370 | Romantik | 1351 |
+-------+----------+---------------------------------+-----------+
31 rows in set (0.48 sec)
Все юзеры удаленные - инфы по ним нет.
Удалил все их сообщения, вернул INNER JOIN - посмотрим что будет дальше.
Редактировался d-linux (2007-11-29 13:05:11)
Возникла такая фигня:
Развивается тема 1-2-3-4 страничка, и растет дальше... на днях появилась 8ая, захожу посмотреть что новенького написали -пусто. Постов на 8ой страничке вообще нет. 7ая есть все нормально. Если набить 7ую чтобы она "перевалила" на 8 -8 будет заполнена. И все как должно быть. Вобщем пун считает что страниц 8 хотя на самом деле их 7. Попробовал перестроить индекс -нифига. Вобщем-то не мешает, но странно как-то, продолжаю искать причины.
Столкнулся с такой же проблемой, причем косяк выскакивает только в определенных темах. Никакой закономерности не нашел. Dayset, ты не нашел решения проблемы?
Чистка форума, Forum cleanup
Да, как оказалось помогает. Хотя, судя по 4-му сообщению, Dayset'у не помогло.
После Пустые странички в форуме всё исправилось.
Страницы 1
Тема закрыта