Счетчик просмотров
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Счетчик просмотров
Здравствуйте, как правильно организовать счетчик просмотров? Постов например. Плюс если на одной странице выводится несколько постов, как их учитывать как просмотренные? Желательно с примерами реализации. Гугл упорно не выдает ничего полезного по yii2 views counter
-
- Сообщения: 241
- Зарегистрирован: 2014.12.06, 00:06
Re: Счетчик просмотров
Ну самый простой спобоб наверно:
В табличке постов сделать ячейку просмотры
В экшене просмотра поста прописать апдейт ячейки +1
В табличке постов сделать ячейку просмотры
В экшене просмотра поста прописать апдейт ячейки +1
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: Счетчик просмотров
Так и сделал для одного, а если их там несколько на страничке я хз.phpstarter писал(а):Ну самый простой спобоб наверно:
В табличке постов сделать ячейку просмотры
В экшене просмотра поста прописать апдейт ячейки +1
-
- Сообщения: 241
- Зарегистрирован: 2014.12.06, 00:06
Re: Счетчик просмотров
Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.
Вот и обновите всем этим постам ячейку на +1.
Re: Счетчик просмотров
по хорошему нужно на жс определять находится ли пост в области viewport браузера. и тогда добавлять +1 аяксом. ну и реализовать временной lock, чтобы просмотры не накручивались по ф5 или быстрому дёрганию сколла.
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: Счетчик просмотров
Дело в том что не знаю =) В том плане что выводится все одним запросом, а чтобы обновить поле в модели надо обойти все посты foreach'ем, по крайней мере я так это себе представляю, а это как-то костыльно, долго, создаст большую нагрузку на базу и сайт, каждый раз обновлять десятки записей в БД.phpstarter писал(а):Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: Счетчик просмотров
Это верно, но эту защиту я на потом отложил пока. Можно запоминать сессии, IP адреса, подсовывать куки либо все вместе и т.д., вобщем много вариантов отсеять левые накрутки) Главное щас как сделать эти накрутки хотябы без защиты)Demon_id писал(а):по хорошему нужно на жс определять находится ли пост в области viewport браузера. и тогда добавлять +1 аяксом. ну и реализовать временной lock, чтобы просмотры не накручивались по ф5 или быстрому дёрганию сколла.
Re: Счетчик просмотров
ну вы же выводите эти посты циклом? вот и выводите. в каждой итерации цикла собирайте в массив id постов. а после цикла сделайте один IN запрос на обновление.Vespertilio писал(а):Дело в том что не знаю =) В том плане что выводится все одним запросом, а чтобы обновить поле в модели надо обойти все посты foreach'ем, по крайней мере я так это себе представляю, а это как-то костыльно, долго, создаст большую нагрузку на базу и сайт, каждый раз обновлять десятки записей в БД.phpstarter писал(а):Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.
Re: Счетчик просмотров
http://www.yiiframework.com/doc-2.0/yii ... %29-detailVespertilio писал(а):Дело в том что не знаю =) В том плане что выводится все одним запросом, а чтобы обновить поле в модели надо обойти все посты foreach'ем, по крайней мере я так это себе представляю, а это как-то костыльно, долго, создаст большую нагрузку на базу и сайт, каждый раз обновлять десятки записей в БД.phpstarter писал(а):Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.
-
- Сообщения: 54
- Зарегистрирован: 2010.06.12, 22:18
- Откуда: Набережные Челны
- Контактная информация:
Re: Счетчик просмотров
Для 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; ?>
в модели
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; ?>
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: Счетчик просмотров
я вывожу не циклом, вернее не явно, а через listview, у виджета дето там есть цикл конечно, можно обойти циклом и модель с результатами поиска и выдрать айдишники, но как-то это не красиво представляетсяDemon_id писал(а):ну вы же выводите эти посты циклом? вот и выводите. в каждой итерации цикла собирайте в массив id постов. а после цикла сделайте один IN запрос на обновление.Vespertilio писал(а):Дело в том что не знаю =) В том плане что выводится все одним запросом, а чтобы обновить поле в модели надо обойти все посты foreach'ем, по крайней мере я так это себе представляю, а это как-то костыльно, долго, создаст большую нагрузку на базу и сайт, каждый раз обновлять десятки записей в БД.phpstarter писал(а):Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.
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 писал(а):http://www.yiiframework.com/doc-2.0/yii ... %29-detailVespertilio писал(а):Дело в том что не знаю =) В том плане что выводится все одним запросом, а чтобы обновить поле в модели надо обойти все посты foreach'ем, по крайней мере я так это себе представляю, а это как-то костыльно, долго, создаст большую нагрузку на базу и сайт, каждый раз обновлять десятки записей в БД.phpstarter писал(а):Ну Выж знаете какие посты вы выводите на конкретной страничке в конкретный момент ?
Вот и обновите всем этим постам ячейку на +1.