Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подсчет количества просмотров объявлений

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
alnik-75
Отправлено: 30 Сентября, 2015 - 09:59:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




Добрый день, уважаемые участники форума!!!

Хочу услышать ваше мнение по поводу поднятой мною темы.

Вижу два варианта:

1. В таблице Ads с объявлениями создать столбец view. При просмотре объявления делать UPDATE +1 в столбце view. Недостаток - невозможно разделить, когда эти просмотры были.

2. Создать отдельную таблицу view, в которую при просмотре объявления вносить новую запись с указанием id объявления. Тут можно вносить время просмотра, соответственно, есть возможность разбивки по дням, месяцам и т.д. Этот способ и использую я. Сейчас в БД 7500 объявлений. соответственно, записей в таблице view 780 000. Если объявлений будет 100 000, то записей в таблице просмотров уже будет сколько то миллионов. Понятно, можно добавить индексы к id объявления (для выборки количества просмотров конкретного объявления) и date (для разбивки по времени).

Хочу услышать Ваше мнение об оптимальном решении данного вопроса с учетом указанных перспектив роста количества объявлений.

Заранее выражаю благодарность откликнувшимся
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Сентября, 2015 - 10:32:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Архивировать записи статистики старше месяца.
Ибо Пете продающему балалайку плевать на подробнейшую статистику просмотров месячной давности.

Под архивацией я имел ввиду:
CODE (htmlphp):
скопировать код в буфер обмена
  1. https://ru.wikipedia.org/wiki/%D0%90%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F

Т.е. когда кол-во просмотров записаных а-ля "id, date" приводится к виду "id, wiews_count, year_month"
 
 Top
alnik-75
Отправлено: 30 Сентября, 2015 - 10:42:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




DeepVarvar пишет:
Архивировать записи статистики старше месяца.
Ибо Пете продающему балалайку плевать на подробнейшую статистику просмотров месячной давности.

Под архивацией я имел ввиду:
CODE (htmlphp):
скопировать код в буфер обмена
  1. https://ru.wikipedia.org/wiki/%D0%90%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F

Т.е. когда кол-во просмотров записаных а-ля "id, date" приводится к виду "id, wiews_count, year_month"


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

Далее, для установления количества просмотров объявления и получения временной статистики делаю выборку из таблиц "wiew" и "просмотры-архив", из которых получаю общее количество просмотров. Из первой таблицы получаю статистику по просмотрам в текущем месяце (сегодня, вчера, за неделю, за месяц), а из второй таблицы получаю количесвто просмотров, имевших место свыше месяца назад. Я так понимаю?
 
 Top
Panoptik
Отправлено: 30 Сентября, 2015 - 10:54:28
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




никто не мешает вам содержать оба типа данных. иметь столбецы total_views, today_views, week_views, month_views в таблице с сущностью и отдельно хранить детализированный отчет с точностью до секунды, кто, Когда и при каких обстоятельствах просматривал


-----
Just do it
 
 Top
alnik-75
Отправлено: 30 Сентября, 2015 - 11:06:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




DeepVarvar пишет:

Т.е. когда кол-во просмотров записаных а-ля "id, date" приводится к виду "id, wiews_count, year_month"

можно и не делать вид "id, wiews_count, year_month", а сделать "id, wiews_count". разбивку по прошлым месяцам и годам можно не делать, а просто знать количество общее.

Далее, проходит время. Из таблицы "wiew" удаляются записи старые, подсчитывается их количество и апдейтится вторая таблица, где к количеству просмотров по айди объявления добавляется количество удаленных из первой таблицы. Правильно мыслю?

(Отредактировано автором: 30 Сентября, 2015 - 11:09:13)

 
 Top
Flash_PR
Отправлено: 30 Сентября, 2015 - 11:41:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013  
Откуда: Санкт-Петербург


Помог: 6 раз(а)




Тоже неделю назад делал статистику. Сделал отдельной таблицей, id юзера, ip, откуда пришел, браузер, ОС, и время просмотра конечно. С проблемой кол-ва записей решил, что буду по крону удалять записи старше 1 месяца. На правильность решения не претендую, делал по "наитию" первый раз....
(Добавление)
alnik-75 пишет:
Далее, проходит время. Из таблицы "wiew" удаляются записи старые, подсчитывается их количество и апдейтится вторая таблица, где к количеству просмотров по айди объявления добавляется количество удаленных из первой таблицы. Правильно мыслю?


Если вам обязательно нужно знать кол-во просмотров за все время, то почему сразу не делать апдейт на +1, и подробную запись просмотра? Получится в реальном времени вы знаете количество просмотров. А так только до апдейта.


-----
Умные мысли приходят тогда, когда все глупости уже сделаны...
 
My status
 Top
Panoptik
Отправлено: 01 Октября, 2015 - 12:02:17
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




удалять данный старше 1 месяца как-то неправильно. тем более вряд ли у вас данных очень много. и даже 10к записей - это мелочь. бд спокойно справляется с миллионами. главное индексы и кеши. Плюс частота обращений к таким запросам будет редкой.
у меня сбор данных идет в миллионах. и я пока ничего не удаляю, да и не собираюсь, мне нужно анализировать срезы всех данных на каждом промежутке времени, по крайней мере за последнее время. для ТС я дал совет. пусть хранит детализированные данные в отдельной таблице, а агрегированные - в столбце за любой удобный период и никаких проблем не будет


-----
Just do it
 
 Top
alnik-75
Отправлено: 01 Октября, 2015 - 13:55:42
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




Panoptik пишет:
удалять данный старше 1 месяца как-то неправильно. тем более вряд ли у вас данных очень много. и даже 10к записей - это мелочь. бд спокойно справляется с миллионами. главное индексы и кеши. Плюс частота обращений к таким запросам будет редкой.
у меня сбор данных идет в миллионах. и я пока ничего не удаляю, да и не собираюсь, мне нужно анализировать срезы всех данных на каждом промежутке времени, по крайней мере за последнее время. для ТС я дал совет. пусть хранит детализированные данные в отдельной таблице, а агрегированные - в столбце за любой удобный период и никаких проблем не будет


Расскажите пожалуйста про кэши
 
 Top
Panoptik
Отправлено: 01 Октября, 2015 - 15:16:54
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




а чего там рассказывать. все сложные выборки закидываете в кеш на час или сутки и при втором обращении уже не грузите базу сложными выборками а берете готовые результаты из кеша. кеш может быть как в оперативной памяти так и в файле либо бд (поле count_views, today_views тоже своеобразные кеши)


-----
Just do it
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB