Задать вопрос
GreatGleb
@GreatGleb
Разработчик

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

В PHP сессия для каждого клиента разная. И если для одного клиента в сессии сохранится определённая переменная, то для остальных этой переменной не будет.
Вопрос: как можно сделать так, чтобы при сохранении в сессию переменных для одного клиента этой сессией могли воспользоваться остальные. Возможно, вы знаете аналоги. БД не предлагать.
  • Вопрос задан
  • 295 просмотров
Подписаться 2 Простой 5 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Skillbox
    PHP-разработчик. Базовый уровень
    3 месяца
    Далее
Решения вопроса 2
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Единственно правильный ответ - никак.

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

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

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

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

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

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

Похожие вопросы