Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
2dl маааасенький баг в борде нашел 22.10.01 17:12 Штраф: 10
Автор: paganoid Статус: Member
|
Когда делаешь просмотр всех своих сообщений, некорректно идёт разбивка на страницы. Последнее сообщение на текущей странице всегда является первым на следующей.
|
|
2dl маааасенький баг в борде нашел 22.10.01 17:39
Автор: dl <Dmitry Leonov>
|
> Когда делаешь просмотр всех своих сообщений, некорректно > идёт разбивка на страницы. Последнее сообщение на текущей > странице всегда является первым на следующей.
Не всегда, но бывает. Дело в следующем: и в поиске, и в "ваших сообщениях" ищутся не нитки, ищутся сообщения, а нитки строятся на лету по отношениям корневое/родительское/дочернее сообщение. При поиске для каждой i-й страницы заказывается N сообщений, удовлетворяющих критерию, где N - число ниток, которое берется из настроек. SQL-сервер отдает очередную порцию из N найденных сообщений, после чего для каждого из них формируется полная нитка (если два найденных сообщения принадлежат однйо нитке, то нитка, конечно, выводится только один раз). Но проблема в том, что иногда в этой же нитке находится и N+1-е сообщение, которое не было отдано в ответ на запрос по i-й странице, а будет отдано только при запросе на i+1-ю страницу. В этом случае полная нитка для этого сообщения будет построена и на i-й странице. Вылечить это можно либо киданием двух запросов на поиск вместо одного и сличением их результатов, либо серьезным перепроектированием всей базы. Второго точно не хочется, а первое - жаба душит.
|
|
|