Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Лимит личных сообщений 
:(
    Опции темы
ihb0
Дата 28.5.2014, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 29.4.2008

Репутация: нет
Всего: нет



Добрый день.
Вопрос такого плана.
Пользователи обмениваются личными сообщениями(ЛС). ЛС хранятся в БД, в таблице ЛС имеем, помимо прочего, поля owner_id и created_at.
Как лучше реализовать лимиты на кол-во сообщений от пользователя в единицу времени?
PM MAIL   Вверх
ksnk
Дата 28.5.2014, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



ihb0,  а зачем лимиты? Для предотвращения спама? Спамеров должен банить модератор по заявке других пользователей (кнопка "пожаловаться на спам")

Для предотвращения совсем уж идиотского спама - можно смотреть на время последнего отправленного сообщения (хранить в данных пользователя) и если отсылка идет очень часто - говорить что-то неприличное и пусть ждет.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
_Y_
Дата 29.5.2014, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Я бы, конечно, сделал так, как посоветовал ksnk,  но если ставить задачей именно лимит сообщений в единицу времени, то только хранить время каждого сообщения и каждый раз проверять.

Если в таблице хранится время для всех сообщений, то (сколь помню синтаксис SQL):
Код

SELECT COUNT(*) FROM Msg WHERE Msg.user = "Pupkin" AND  Msg.time > (NOW() - 1000);

1000 здесь - время за которое проверяется количество сообщений.

Если почему-либо нельзя хранить время для каждого сообщения, то для хранения времени сообщений составляется отдельная таблица из которой периодически (а то и при каждом обращении) убираются устаревшие записи.



--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Akina
Дата 29.5.2014, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(ihb0 @  28.5.2014,  22:18 Найти цитируемый пост)
 лимиты на кол-во сообщений от пользователя в единицу времени? 

Проверять, что за требуемый диапазон времени количество сообщений менее установленного лимита. Иначе отказывать. В любом случае это отдельный запрос к БД - никуда не деваться.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ihb0
Дата 29.5.2014, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 29.4.2008

Репутация: нет
Всего: нет



В целом у меня аналогичные мысли, но назвать это изящным и правильным решением я не могу. Слишком высокая нагрузка на БД предполагает быть для такого минорного функционала.
А лимиты - для предотвращения спама в его проявлениях(как часть функционала).
Будем подумать. Спасибо.
PM MAIL   Вверх
_Y_
Дата 29.5.2014, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



ihb0, думаю, если хранить время в отдельной таблице и убирать "устаревшие" записи, нагрузка может быть и поменьше.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Akina
Дата 29.5.2014, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(ihb0 @  29.5.2014,  19:06 Найти цитируемый пост)
Слишком высокая нагрузка на БД предполагает быть для такого минорного функционала.

Ну так вынеси эту логику на сервер, какие проблемы-то? а статистику там вообще можно кэшировать.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ksnk
Дата 29.5.2014, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



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

А вот авторизация-реавторизация со сбросом сессии (очисткой кук) - должна быть как-то отдельно отработана. 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0834 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.