|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.02.2010, 22:30 | #1 |
Пользователь
Регистрация: 13.05.2009
Сообщений: 71
|
Счётчик кликов (IP, Cookies или что то ещё?)
Есть необходимость считать клики по кнопке в блоге. Кнопка есть в каждой статье и обычно кликают около 100 пользователей.
Необходимо, чтоб в каждой статье клик каждого пользователя считался только один раз. Варианты реализации (пока вижу только 2 приемлемых): 1. Заносить IP в БД. Плюсы: мускул уже установлен, скрипт и так работает с ним. Минусы: 100 статей * 100 кликов = 10^4 записей в БД. Создавать отдельную таблицу для каждой статьи - не вариант, а выполнять поиск в одной таблице с десятью тысячами записей и по IP и по ID статьи - не долго ли? Да и сколько будет весить такая таблица? 2. Устанавливать cookies в браузер пользователя. Плюсы: не насилуем свой мускул. Минусы: меняем браузер/удаляем cookies - мелкопакостим кликами сколько угодно. Что из двух зол выбрать? Если SQL, то может есть вариант сохранения к примеру всех IP к одной статье в одном текстовом поле, а потом функциями php нахождения этих IP из текстового поля? И как быть с IPv6? Вообще, это очень будет нагружать BD? Если cookies - то, например, если пользователь пожелает кликать в каждой статье, это ему 100 записей передать? Может есть другие варианты, а я пока не в курсе? :-) |
18.02.2010, 23:12 | #2 |
Laravel/Vue expert
Старожил Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 2,832
|
В куках записи о всех статьях не получится хранить.
Так что - БД. Как один из вариантов: В таблицу статей добавить еще одно поле. Туда сохранять JSON-обьект. Например: Код:
В каждом обьекте в массиве visits есть 2 записи: айпи пользователя и проверочный (неуникальный) ключ, записанный в куки браузера. Если пользователь заходит на статью - считывается данное поле и производится поиск бо обьекту данного айпишника. Если айпишник найден, то сверяем ключ, если ключ неверен - ищем дальше. Если поиск неуспешен - будем думать, что этот пользователь впервые посетил статью. Тогда пишем в обьект и апдейтим таблицу. Можно использовать и по другому. Создать таблицу с пользователями и в ней сохранять в массиве JSON айдишники статей. IPv6 или IPv4 это - без разницы. Такое преимущество в комбинировании БД + КУКИ + JSON - позволяет минимизировать затраты на выборку/запись в БД, плюс упорядочнено хранить посещения в JSON обьектах, с которыми работать уже будет РНР, посредством функций json-php или array-php. Можно заюзать и json-php классы. Последний раз редактировалось SkyM@n; 19.02.2010 в 10:17. |
20.02.2010, 13:41 | #3 |
Пользователь
Регистрация: 13.05.2009
Сообщений: 71
|
Спасибо, всё отлично получилось.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Что мощнее или портативнее движок directx или opengl? | albatros | Помощь студентам | 2 | 08.12.2009 17:43 |
Обработка кликов TСooltrayicon | Shouldercannon | Компоненты Delphi | 2 | 04.06.2009 21:58 |
обработка кликов в treeview | CraZZy RabbIt | Общие вопросы Delphi | 2 | 28.03.2009 22:28 |
Отлов кликов мыши | LAFUDR | Помощь студентам | 9 | 24.05.2008 01:32 |