GreatGleb
@GreatGleb
Студент

Как использовать сессию для всех клиентов одновременно?

В PHP сессия для каждого клиента разная. И если для одного клиента в сессии сохранится определённая переменная, то для остальных этой переменной не будет.
Вопрос: как можно сделать так, чтобы при сохранении в сессию переменных для одного клиента этой сессией могли воспользоваться остальные. Возможно, вы знаете аналоги. БД не предлагать.
  • Вопрос задан
  • 213 просмотров
Решения вопроса 2
Fockker
@Fockker Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Единственно правильный ответ - никак.

Такой вопрос можно задать только от безграмотности. От непонимания того, как работают сессии.
Потому что сессия в обязательном порядке блокирует файл с данными на время работы с ним. И именно отсюда возникают многочисленные вопросы "а почему у меня долгий процесс в одной вкладке блокирует сайт во всех остальных вкладках?". А теперь представим, что один и тот же файл блокирует не один юзер, а все по очереди. Таймаут будет постепенно накапливаться, и в итоге сайт у всех пользователей сначала начнет ощутимо подтормаживать, а потом и вовсе встанет колом.
Поэтому такая вещь, как "сессия сразу для всех пользователей" заведомо является бессмыслицей.

Если под "сессией" имелось в виду общее хранилище для всех пользователей, то оно называется "база данных". И в этом смысле "БД не предлагать" выглядит беспочвенным капризом. Как правильно заметил N в комментарии, такое заявление звучит как "Как кушать суп? Ложку не предлагать."
Такие заявления надо всегда подробно обосновывать. И в этом случае вам либо действительно подскажут, как обойтись без БД, либо объяснят, что это просто блажь.

Если хранилище не нужно, то есть значение переменной не меняется со временем, то, как правильно сказано в соседнем ответе, просто делается константа в конфигурационном файле, который по умолчанию включается во все скрипты.
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Вам уже подсказали, создаёте файл в директории /tmp/session-var.txt, записываете туда значение перемен...

Стоп, а не проще это значение просто вписать в index.php, или какой там у вас PHP-файл грузится первым?...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
firedragon
@firedragon
Senior .NET developer
Глеб Сугак Не используйте сессии для хранения данных. Максимум что там нужно хранить это идентификатор пользователя и временные настройки до того момента пока пользователь не вошел в систему.

Для остального существует БД из нее вы все получаете и отправляете клиенту.
Ответ написан
Комментировать
@alexalexes
memcached, redis - можно использовать как буфер обмена между php процессами, но не более того. Для долговременного хранения данных нужна СУБД.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы