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

Тема в разделе "PHP", создана пользователем lena berkova, 6 сен 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. lena berkova

    lena berkova

    Регистр.:
    14 янв 2009
    Сообщения:
    441
    Симпатии:
    19
    есть ли возможность сохранить данные как в сессии но для всех пользователей глобально?
     
  2. Jools

    Jools Создатель

    Регистр.:
    28 июн 2009
    Сообщения:
    14
    Симпатии:
    3
    думаю через базу данных
     
  3. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    вообще любой файл в движке, да и где угодно (сессия ведь тоже файл по дефолту) доступен исполняемому скрипту во время исполнения, лишь бы были права на чтение. Разделение на сессии между людьми чисто логическое. Ничего не мешает пойти и вычитать любой доступный файл.

    Ведь одни же файлы скриптов исполняются для любого пользователя.
     
  4. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    737
    Симпатии:
    263
    Сделай свой session_save_handler - и сохраняй переменные сессии в промежутках между выполнением скрипта не в те файлы, куда оно их сохраняет по умолчанию, а в свой, с постоянным именем, общим для всех сессий. И все, после этого обычный массив $_SESSION будет у тебя глобальным для всех копий скриптов. Можно пользоваться.
     
  5. lena berkova

    lena berkova

    Регистр.:
    14 янв 2009
    Сообщения:
    441
    Симпатии:
    19
    т.е. стандартного решения в пхп нету, нужно городить свой велосипед?
     
  6. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    737
    Симпатии:
    263
    Попробуй вот это, как мне кажется самый простой способ:

    PHP:
      session_name('globalsession'); // <-- !!
      
    session_start();
      echo 
    $_SESSION['var']++;
     
  7. Tier_WerWolf

    Tier_WerWolf Создатель

    Регистр.:
    9 июн 2009
    Сообщения:
    16
    Симпатии:
    2
    session_name('globalsession'); // <-- !!
    Просто назвал сессию globalsession :) Ничего так что сессия уникальна для каждого пользователя?
    Могу предложить данные сохранять в db. С файлами замучаешься :)
     
  8. OverFade

    OverFade Создатель

    Регистр.:
    4 авг 2009
    Сообщения:
    15
    Симпатии:
    2
    Сессия на то она и сессия, что она "своя" для каждого пользователя.
    И создавать глобальную сессию - тот еще изврат.
    Если данные нужно сохранить так, чтобы доступ к ним был для всех пользователей, то тут всего два варианта: использовать БД (что лучше всего) или записывать инфу в файлы (что проще всего).

    Из документации:
    Работа с файлами
    Работа с БД
    (рекомендую читать комментарии. В них все необходимые вам примеры)
     
  9. Tier_WerWolf

    Tier_WerWolf Создатель

    Регистр.:
    9 июн 2009
    Сообщения:
    16
    Симпатии:
    2
    С файлами не рекомендую работать, ибо :
    1. работа с ними существенно замедляется когда файлы выростают
    2. конкурирующий доступ может порождать проблемы
    ну и т.д.
     
  10. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    737
    Симпатии:
    263
    Сорри, протупил. Конечно же имелось в виду подставлять скрипту каждый раз один и тот же session_id, чтобы он каждый раз брал один и тот же блок переменных сессии.

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

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