Заказчик попросил сделать чтобы просмотры материалов были уникальными для разных IP. т.е. чтобы много раз открывая один и тот же материал на одном IPшнике счетчик не увеличивался сам собой.
Собственно я решил в отдельной таблице хранить записи о просмотре конкретного материала с конкретного ip адреса. При открытии проверять есть ли запись. а количество просмотров в записи материала хранится и увеличивается через UPDATE ... SET views=views+1
Я создал такую таблицу
CREATE TABLE IF NOT EXISTS `cms_views` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`plugin` enum('2','17','171','2007') NOT NULL,
`object` int(11) DEFAULT '0',
`ip` varchar(15) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1
;
Но думаю вот как сделать ее максимально компактной, так чтобы не получилось что база вырастет до 100мб чисто за счет этой таблицы за пол года.(сейчас вся база менее 2мб).и рост продолжится.
Может быть кто-то подскажет куда более изящный способ.
Как таковой задачи привязки к ip жесткой нет, задача в том чтобы кол-во просмотров было хоть сколько-то похожее на правду.