Несколько сессий в одном экземпляре с использованием PHP? - PullRequest
2 голосов
/ 30 августа 2010

У меня есть проект, в котором я хотел бы создать два сеансовых куки в одном браузере.Первый сеанс должен был бы однозначно идентифицировать человека, второй был бы для обмена событиями в рамках сеанса между пользователями.Я использовал базу данных для этого, но хотел бы, чтобы данные исчезли, когда сеанс умирает.В системе нет входов в систему.

Есть ли способ сделать это, кроме создания системы файлов cookie для репликации функций?

Например, у нас будет два сеансовых файла cookie:

name=someRandomUUID и session=valueSharedBetweenUsers.

Я не хочу делить сеанс name с несколькими пользователями, но сеанс session будет.Мысли? * * 1013

Ответы [ 4 ]

3 голосов
/ 30 августа 2010

Если вы хотите обмениваться информацией между пользователями, использование сеанса не самая лучшая идея, так как использует файловую систему.Вам лучше использовать базу данных, которая решает все проблемы блокировки, параллелизма и т. Д.

Хотя то, что вы просите, технически возможно, я настоятельно рекомендую против этого.

РЕДАКТИРОВАТЬ

Предполагая, что я правильно понял ваше требование, вот как я бы это сделал:

  1. Использовать сеанс только для хранения данных сеанса, связанных с этим пользователем.Это может быть что-то вроде:

    $_SESSION['name'] = 'test name';
    $_SESSION['groupid'] = 2;
    
  2. БД MySQL и таблица с полями groupid, XXXXX (данные, которые вы хотите сохранить), timestamp

Всякий раз, когда кто-либо обновляет информацию для определенного идентификатора группы, вы обновляете отметку времени.

Затем запускаете простой cronjob, чтобы проверить, если current time - timestamp > 3600 (один час), и вы можете считатькак устаревшие и удалить эти записи.

2 голосов
/ 30 августа 2010

Я * думаю * вы можете иметь только один "текущий" сеанс, но вы ссылаетесь на сессионное имя:

http://www.php.net/manual/en/function.session-name.php

Функциональность cookie очень проста.Я предлагаю вместо этого разобраться.

1 голос
/ 30 августа 2010

Откуда берется "valueSharedBetweenUsers"?Это константа или запись в базе данных?

В любом случае не имеет смысла создавать один сеанс на группу.Вместо этого вы должны давать каждому пользователю уникальный сеанс для каждого пользователя;с вашим «общим» атрибутом в качестве атрибута сеанса для каждого индивидуума.

Итак, начните уникальный сеанс, затем просто выполните <? $_SESSION['session'] = 'mySharedValue'; ?>

Теперь у всех есть сеанс с уникальным ID сессии и общим значением'сеанс'.

(Очевидно, что если вам понадобится изменить этот атрибут позже, вам придется делать это отдельно для каждого проверенного лица)

0 голосов
/ 25 августа 2015

Это не так уж далеко, так как люди делают Facebook и Twitter, по крайней мере, 10 различных сеансов создаются, когда пользователь вошел в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...