Пользователи online

Здравствуйте.

Решил по мотивам этого топика сделать "счетчик" онлайн пользователей.

Таблица yiisession выглядит вот так:




CREATE TABLE IF NOT EXISTS `yiisession` (

  `id` char(32) NOT NULL,

  `expire` int(11) DEFAULT NULL,

  `data` text,

  `user_id` int(10) unsigned DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;



Переопределил метод changeIdentity в WebUser, он выглядит так:




...

    protected function changeIdentity($id,$name,$states)

    {

        parent::changeIdentity($id,$name, $states);


        $sql = "UPDATE yiisession SET user_id=:user_id WHERE id=:id";

        $command = Yii::app()->db->createCommand($sql);

        $command->bindValue(':user_id', $id);

	$command->bindValue(':id', Yii::app()->session->sessionId);

        $command->execute();

    }

...



И все вроде должно работать, но не работает. В user_id пишется NULL, ошибок никаких не появляется, в логах тишина. Если запрос выполнить вручную (в pma), то user_id меняется. Есть подозрение, что делаю апдейт не в том месте.

Может кто то решал подобную задачу?

Жаль, что никто не сталкивался с подобной задачей. Единственное решение, которое я придумал, явно не лучшее, выполнять запрос с обновлением id пользователя в таблице сессий в контроллере site/index (который отрабатывает после входа).

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

j0ker_

Так даже лучше))

Почему же никто не сталкивался? я сталкивался, вроде успешно решил… Ну как в том топике и описывал ::)

если тема ещё актуально, спрашивай, я посмотрю как у меня сделано B)

В принципе я уже сделал как написал в предыдущем топике. Но интересно (на будущее), что я делал не так при хранении сессий в БД. Покажи, пожалуйста, свой changeIdentity или поясни как ты делал. То что описано в топике не работает на Yii 1.1.6, а скорей всего и на более ранних версиях, топику более 2х лет.