Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 26 апр 2024, 07:22

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 07 апр 2012, 00:26 
Не в сети
Зеленый

Зарегистрирован: 07 апр 2012, 00:22
Сообщения: 3
Подскажите плиз кто уже реализовывал счетчик просмотров страниц в Kohana3.2. Очень нужно. И как лучше это сделать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 апр 2012, 01:24 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Я делал. Для страниц сделал поле "Количество просмотров" и при заходе на страницу делал апдейт +1

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 апр 2012, 11:57 
Не в сети
Зеленый

Зарегистрирован: 07 апр 2012, 00:22
Сообщения: 3
Спасибо за ответ. А можно немного поподробнее? В той же таблице или лучше создать отдельную таблицу для счетчика? Какой вариант быстрее в работе? И если возможно код реализации счетчика.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 апр 2012, 14:27 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Быстрее конечно в той же. Вы сразу запросом сразу получаете и информацию по странице и количество просмотров. А так прийдется какой-нибудь JOIN лепить...зачем ?
Т.е. будет таблица, там статьи например. Заголовок статьи, дата, сама статья, автор итд ... и количество просмотров.
Метод в модели типа такого:
Код:
   public function updateCurrent($id)
   {   
      $query = DB::update('articles')
            ->set(array('views' => DB::expr('views + 1')))
            ->where('id', '=', $id)
            ->execute();
   }


В него передается id статьи.
Это query builder. ORM я не использую.

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 апр 2012, 14:59 
Не в сети
Зеленый

Зарегистрирован: 07 апр 2012, 00:22
Сообщения: 3
Спасибо огромное


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 апр 2012, 23:13 
Не в сети
Зеленый
Аватара пользователя

Зарегистрирован: 13 мар 2012, 13:04
Сообщения: 6
admin писал(а):
DB::expr('views + 1')


Жесть.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 апр 2012, 00:00 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
В чем жесть ? Подобный пример дается в официальном мануале коханы
http://kohanaframework.org/3.2/guide/database/query/builder

Код:
$query = DB::update('users')->set(array('login_count' => DB::expr('login_count + 1')))->where('id', '=', $id);

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 апр 2012, 11:20 
Не в сети
Зеленый
Аватара пользователя

Зарегистрирован: 13 мар 2012, 13:04
Сообщения: 6
admin писал(а):
В чем жесть ? Подобный пример дается в официальном мануале коханы
http://kohanaframework.org/3.2/guide/database/query/builder

Код:
$query = DB::update('users')->set(array('login_count' => DB::expr('login_count + 1')))->where('id', '=', $id);


Жесть в том, что вместо простейшего и быстрого запроса на plain sql делается куча доп.действий. Хотя, это наверное просто ворчание ))))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 апр 2012, 14:02 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
А в чем тяжесть запроса ? В DB::expr, который добавляет данные "как они есть", без обрамления в кавычки ? Или в использовании квери билдера для счетчика ?
Тогда можно и про орм сказать, что все это очень тяжело. Я орм не использовал почти, но что-то читаю про него и огорчаюсь. Что он и поля тянет все, даже когда мне всего два поля надо и перед делитом селект делает.
Тем более, что данный пример есть в мануале, не дураки наверное писали :) (кстати брал я не оттуда, потом уже наткнулся..ну 1 в 1 :))

Ув. aktuba, вы еще не видели жесть.
А я наблюдал, когда счетчик реализовывали вообще таким образом:
SELECT `views` FROM `articles` WHERE `id` = 2
тут пхп код где мы к полученному $views прибавляем единичку
UPDATE `articles` SET `views` = $views WHERE `id` = 2

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 апр 2012, 14:09 
Не в сети
Зеленый
Аватара пользователя

Зарегистрирован: 13 мар 2012, 13:04
Сообщения: 6
admin писал(а):
А в чем тяжесть запроса ? В DB::expr, который добавляет данные "как они есть", без обрамления в кавычки ? Или в использовании квери билдера для счетчика ?
Тогда можно и про орм сказать, что все это очень тяжело. Я орм не использовал почти, но что-то читаю про него и огорчаюсь. Что он и поля тянет все, даже когда мне всего два поля надо и перед делитом селект делает.
Тем более, что данный пример есть в мануале, не дураки наверное писали :) (кстати брал я не оттуда, потом уже наткнулся..ну 1 в 1 :))

Ув. aktuba, вы еще не видели жесть.
А я наблюдал, когда счетчик реализовывали вообще таким образом:
SELECT `views` FROM `articles` WHERE `id` = 2
тут пхп код где мы к полученному $views прибавляем единичку
UPDATE `articles` SET `views` = $views WHERE `id` = 2


Тяжесть в использовании оболочки (орм/query builder) над запросами. Хочешь сделать хороший пост для сайта? Сделай сравнение скорости выполнения запросов plain sql vs orm. Начиная с простых, заканчивая сложными.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group