Не понимаю логику автора плагина - Дизайн и модификация Invision Power Board

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

 

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

Теги не найдены

Страница 1 из 1

Не понимаю логику автора плагина

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

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

Отправлено 30 Январь 2019 - 17:41

Пишу простенький плагин хайда. Для условия просмотра скрытого текста "требуется ответ в этой теме" в аналогичном плагине автор использует такой код

$topicCache[ $post->topic_id ]['repliesCached'] = 'CACHED'; // Skipping TRUE here or it might be seen as ID 1 sometimes..

// Load all visible replies into memory in case we have other members too (email notifications?)
$topicCache[ $post->topic_id ] = $topicCache[ $post->topic_id ] + iterator_to_array( \IPS\Db::i()->select( 'DISTINCT(author_id)', 'forums_posts', array( 'topic_id=? AND queued=?', $post->topic_id, 0 ) )->setKeyField( 'author_id' ) );

// Check again member IDs with replies now
if ( isset($topicCache[ $post->topic_id ][ \IPS\Member::loggedIn()->member_id ]) )
{
	return TRUE;
}

Не понимаю, зачем запрашивать всех авторов сообщений в теме, если проверяется только один текущий пользователь? Неужели это будет быстрее чем поиск только одного пользователя по topic_id=? AND queued=? AND author_id=?
Да, индекс `topic_id` состоит из (`topic_id`,`queued`,`post_date`,`author_id`) для полноценного использования с условием author_id мешает post_date, но это не значит что индекс не будет использоваться совсем.
Или автор хочет избавится совсем от обращение к диску и работать только с индексом? А если есть 100 и более авторов в теме? Или такие темы встречаются на часто, а для обычных форумов такой запрос будет быстрее?
0

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

 
 
  • Advanced
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 688
  • Регистрация: 15-Октябрь 11
  • Репутация: 197
  • Откуда:Россия, Тула
  • IPB version:I have no IPB
 

Отправлено 30 Январь 2019 - 18:43

Наверное зависит от конкретного пользователя. Если у него 100500 сообщений в разных темах, такая проверка разве не лучше?
Возможно, проще найти такого юзера тут, пальцем показывать не буду, и просто сравнить скорость выполнения запросов, в темах с разным количеством авторов? :)
0

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

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

Отправлено 30 Январь 2019 - 19:28

Но условие требуется для текущей темы - есть ли у пользователя одно сообщение в ней или нет чтобы увидеть скрытый текст.
Задумка автора наверная была в том, чтобы использовать только индекс, но он выбирает поле author_id. Вопрос, а будет ли в этом случае author_id браться из последней части индекса или будет обращение к диску? (надо бы посмотреть explain селекта) Если обращение к диску, то не проще бы лимитировать поиск одной записью в этой теме пользователя который просматривает ее.

Если посмотреть этот плагин (Hide Content Until Users Reply), то он весь основан на оптимизации. Даже замена ббкода hide осуществляется не регулярным выражением а строковыми функциями. И сделано там это в угоду оптимизации. Я просто не понимаю если она с кешированнием всех авторов сообщений темы или это излишне и достаточно кеша только пользователя для которого требуется проверка. Кеш это статическая переменная.
0

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


Страница 1 из 1


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

  

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
При копировании материалов с сайта
прямая ссылка на источник обязательна