глобальная сессия

Статус
В этой теме нельзя размещать новые ответы.

lena berkova

Местный житель
Регистрация
14 Янв 2009
Сообщения
437
Реакции
21
есть ли возможность сохранить данные как в сессии но для всех пользователей глобально?
 
думаю через базу данных
 
вообще любой файл в движке, да и где угодно (сессия ведь тоже файл по дефолту) доступен исполняемому скрипту во время исполнения, лишь бы были права на чтение. Разделение на сессии между людьми чисто логическое. Ничего не мешает пойти и вычитать любой доступный файл.

Ведь одни же файлы скриптов исполняются для любого пользователя.
 
Сделай свой session_save_handler - и сохраняй переменные сессии в промежутках между выполнением скрипта не в те файлы, куда оно их сохраняет по умолчанию, а в свой, с постоянным именем, общим для всех сессий. И все, после этого обычный массив $_SESSION будет у тебя глобальным для всех копий скриптов. Можно пользоваться.
 
т.е. стандартного решения в пхп нету, нужно городить свой велосипед?
 
Попробуй вот это, как мне кажется самый простой способ:

PHP:
  session_name('globalsession'); // <-- !!
  session_start();
  echo $_SESSION['var']++;
 
session_name('globalsession'); // <-- !!
Просто назвал сессию globalsession :) Ничего так что сессия уникальна для каждого пользователя?
Могу предложить данные сохранять в db. С файлами замучаешься :)
 
Сессия на то она и сессия, что она "своя" для каждого пользователя.
И создавать глобальную сессию - тот еще изврат.
Если данные нужно сохранить так, чтобы доступ к ним был для всех пользователей, то тут всего два варианта: использовать БД (что лучше всего) или записывать инфу в файлы (что проще всего).

Из документации:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
(рекомендую читать комментарии. В них все необходимые вам примеры)
 
С файлами не рекомендую работать, ибо :
  1. работа с ними существенно замедляется когда файлы выростают
  2. конкурирующий доступ может порождать проблемы
ну и т.д.
 
session_name('globalsession'); // <-- !!
Просто назвал сессию globalsession :) Ничего так что сессия уникальна для каждого пользователя?
Могу предложить данные сохранять в db. С файлами замучаешься :)

Сорри, протупил. Конечно же имелось в виду подставлять скрипту каждый раз один и тот же session_id, чтобы он каждый раз брал один и тот же блок переменных сессии.

Насчет файлов - $globalvars = unserialize(file_get_contents('file.txt')); и обратно file_put_contents(serialize($globalvars));

Имхо более чем просто. И по производительности кстати совсем не ужас-ужас, как кажется на первый взгляд. Оно отлично кешируется и фактически у тебя происходит работа с памятью, а не с дисковой системой. Т.е. то же самое что было бы и при shared_memory или memcached, и даже может быстрее из-за меньшего кол-ва кода.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху