У меня есть проект, в котором я хотел бы создать два сеансовых файла cookie в одном браузере. Первый сеанс состоял бы в том, чтобы однозначно идентифицировать человека, второй – обмениваться событиями в сеансе между пользователями. Я использовал базу данных для этого, но хотел бы, чтобы данные исчезали, когда сессия умирает. В системе нет логинов.
Есть ли способ сделать это, кроме создания системы cookie для репликации функциональности?
Например, у нас есть два сеансовых файла cookie:
name=someRandomUUID
и session=valueSharedBetweenUsers.
Я не хочу делиться сеансом name
с несколькими пользователями, но session
сессии будет. Мысли?
Если вы хотите обмениваться информацией между пользователями, использование сеанса – не лучшая идея, так как она использует файловую систему. Вам будет лучше использовать базу данных, которая обрабатывает все проблемы блокировки, параллелизма и т. Д.
Хотя то, о чем вы просите, технически возможно, я бы настоятельно рекомендовал против этого.
РЕДАКТИРОВАТЬ
Предполагая, что я правильно понял ваше требование, вот как бы я это сделал:
Используйте сеанс только для хранения данных сеанса, связанных с этим пользователем. Он может включать в себя что-то вроде:
$_SESSION['name'] = 'test name'; $_SESSION['groupid'] = 2;
БД MySQL и таблица с полями groupid
, XXXXX
(данные, которые вы хотите сохранить), timestamp
Всякий раз, когда кто-либо обновляет информацию для определенного идентификатора группы, вы обновляете метку времени.
Затем запустите простой cronjob, чтобы проверить, есть ли current time - timestamp > 3600
(один час), и вы можете считать это устаревшим и удалить эти записи.
Я * думаю * у вас может быть только один «текущий» сеанс, но функциональность, о которой вы говорите, – имя_сайта:
http://www.php.net/manual/en/function.session-name.php
Функциональность файла cookie очень проста. Вместо этого я предлагаю изучить это.
Где происходит «valueSharedBetweenUsers»? Это постоянная запись или запись в базу данных?
В любом случае, было бы бессмысленно создавать один сеанс для каждой группы. Вместо этого вы должны предоставлять каждому пользователю уникальный сеанс для каждого пользователя; с вашим «общим» атрибутом в качестве атрибута сеанса для каждого человека.
Итак, начните уникальную сессию, а затем просто <? $_SESSION['session'] = 'mySharedValue'; ?>
<? $_SESSION['session'] = 'mySharedValue'; ?>
Теперь у всех есть сеанс с уникальным sessionID и общим значением «session».
(Очевидно, что если вам нужно изменить этот атрибут позже, вам придется делать это отдельно для каждого отдельного человека)
Это не так хорошо, как люди делают facebook и твиттер, по крайней мере, 10 различных сеансов, создаваемых, когда пользователь вошел в систему.