Счетчик просмотров

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Vespertilio
Сообщения: 271
Зарегистрирован: 2012.11.30, 07:33

Счетчик просмотров

Сообщение Vespertilio »

Здравствуйте, как правильно организовать счетчик просмотров? Постов например. Плюс если на одной странице выводится несколько постов, как их учитывать как просмотренные? Желательно с примерами реализации. Гугл упорно не выдает ничего полезного по yii2 views counter
phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Счетчик просмотров

Сообщение phpstarter »

Ну самый простой спобоб наверно:
В табличке постов сделать ячейку просмотры
В экшене просмотра поста прописать апдейт ячейки +1
Vespertilio
Сообщения: 271
Зарегистрирован: 2012.11.30, 07:33

Re: Счетчик просмотров

Сообщение Vespertilio »

phpstarter писал(а):Ну самый простой спобоб наверно:
В табличке постов сделать ячейку просмотры
В экшене просмотра поста прописать апдейт ячейки +1
Так и сделал для одного, а если их там несколько на страничке я хз.
phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Счетчик просмотров

Сообщение phpstarter »

Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: Счетчик просмотров

Сообщение Demon_id »

по хорошему нужно на жс определять находится ли пост в области viewport браузера. и тогда добавлять +1 аяксом. ну и реализовать временной lock, чтобы просмотры не накручивались по ф5 или быстрому дёрганию сколла.
Vespertilio
Сообщения: 271
Зарегистрирован: 2012.11.30, 07:33

Re: Счетчик просмотров

Сообщение Vespertilio »

phpstarter писал(а):Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.
Дело в том что не знаю =) В том плане что выводится все одним запросом, а чтобы обновить поле в модели надо обойти все посты foreach'ем, по крайней мере я так это себе представляю, а это как-то костыльно, долго, создаст большую нагрузку на базу и сайт, каждый раз обновлять десятки записей в БД.
Vespertilio
Сообщения: 271
Зарегистрирован: 2012.11.30, 07:33

Re: Счетчик просмотров

Сообщение Vespertilio »

Demon_id писал(а):по хорошему нужно на жс определять находится ли пост в области viewport браузера. и тогда добавлять +1 аяксом. ну и реализовать временной lock, чтобы просмотры не накручивались по ф5 или быстрому дёрганию сколла.
Это верно, но эту защиту я на потом отложил пока. Можно запоминать сессии, IP адреса, подсовывать куки либо все вместе и т.д., вобщем много вариантов отсеять левые накрутки) Главное щас как сделать эти накрутки хотябы без защиты)
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: Счетчик просмотров

Сообщение Demon_id »

Vespertilio писал(а):
phpstarter писал(а):Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.
Дело в том что не знаю =) В том плане что выводится все одним запросом, а чтобы обновить поле в модели надо обойти все посты foreach'ем, по крайней мере я так это себе представляю, а это как-то костыльно, долго, создаст большую нагрузку на базу и сайт, каждый раз обновлять десятки записей в БД.
ну вы же выводите эти посты циклом? вот и выводите. в каждой итерации цикла собирайте в массив id постов. а после цикла сделайте один IN запрос на обновление.
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: Счетчик просмотров

Сообщение futbolim »

Vespertilio писал(а):
phpstarter писал(а):Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.
Дело в том что не знаю =) В том плане что выводится все одним запросом, а чтобы обновить поле в модели надо обойти все посты foreach'ем, по крайней мере я так это себе представляю, а это как-то костыльно, долго, создаст большую нагрузку на базу и сайт, каждый раз обновлять десятки записей в БД.
http://www.yiiframework.com/doc-2.0/yii ... %29-detail
ram0973
Сообщения: 54
Зарегистрирован: 2010.06.12, 22:18
Откуда: Набережные Челны
Контактная информация:

Re: Счетчик просмотров

Сообщение ram0973 »

Для 1 статьи
в модели
class Article extends \yii\db\ActiveRecord {
@property integer $views
в контроллере $article = Article::find() ... $article->updateCounters(['views' => 1]);
во вью <span class="glyphicon glyphicon-eye-open"></span> <?= $article->views; ?>
Vespertilio
Сообщения: 271
Зарегистрирован: 2012.11.30, 07:33

Re: Счетчик просмотров

Сообщение Vespertilio »

Demon_id писал(а):
Vespertilio писал(а):
phpstarter писал(а):Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.
Дело в том что не знаю =) В том плане что выводится все одним запросом, а чтобы обновить поле в модели надо обойти все посты foreach'ем, по крайней мере я так это себе представляю, а это как-то костыльно, долго, создаст большую нагрузку на базу и сайт, каждый раз обновлять десятки записей в БД.
ну вы же выводите эти посты циклом? вот и выводите. в каждой итерации цикла собирайте в массив id постов. а после цикла сделайте один IN запрос на обновление.
я вывожу не циклом, вернее не явно, а через listview, у виджета дето там есть цикл конечно, можно обойти циклом и модель с результатами поиска и выдрать айдишники, но как-то это не красиво представляется
ram0973 писал(а):Для 1 статьи
в модели
class Article extends \yii\db\ActiveRecord {
@property integer $views
в контроллере $article = Article::find() ... $article->updateCounters(['views' => 1]);
во вью <span class="glyphicon glyphicon-eye-open"></span> <?= $article->views; ?>
futbolim писал(а):
Vespertilio писал(а):
phpstarter писал(а):Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.
Дело в том что не знаю =) В том плане что выводится все одним запросом, а чтобы обновить поле в модели надо обойти все посты foreach'ем, по крайней мере я так это себе представляю, а это как-то костыльно, долго, создаст большую нагрузку на базу и сайт, каждый раз обновлять десятки записей в БД.
http://www.yiiframework.com/doc-2.0/yii ... %29-detail
О, спасибо за подсказку!
Ответить