Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Как идентифицировать сессию


Автор: dvamaster 16.8.2010, 13:04
Доброго времени суток!

В MySQL есть CONNECTION_ID() - номер потока (может повториться перезагрузки)
 smile 
Есть ли функция в MySQL, которая бы выдавала бы уникальный номер сессии даже после перезагрузки (навроде GUID)?
Или придется реализовать свой метод?

Автор: dvamaster 18.8.2010, 06:01
Чтож, придумал такое.

Код

CREATE TABLE `sessions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,  -- идентифиукатор сессии
  `tmcreate` timestamp NULL DEFAULT '0000-00-00 00:00:00', -- время создания сессии
  `idconnect` int(11) DEFAULT NULL, -- CONNECTION_ID()
  `user` varchar(128) DEFAULT NULL, -- юзверь
  PRIMARY KEY (`id`),
  KEY `isession` (`idconnect`,`user`)
)


основа: поле `id` и индекс KEY `isession` (`idconnect`,`user`)
создаем запись в сессиях

Код

INSERT INTO `sessions` VALUE (NULL, CURRENT_TIMESTAMP, CONNECTION_ID(), USER());


id сессии выбирается:

Код

SELECT ses.`id`
FROM `sessions` AS ses
WHERE (ses.`idconnect` = CONNECTION_ID()) AND (ses.`user` = USER())
ORDER BY ses.`id` DESC
LIMIT 1;


Добавлено через 5 минут и 2 секунды
Предложите еще вариант? Получше, понадежнее smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)