получить список всех PHP session_id - PullRequest
5 голосов
/ 13 мая 2011

Не возможно получить список всех session_id в PHP СЕССИЯХ?

Примечание: мне нужно сохранить какой-нибудь файл на сервере.Один файл равен одному сеансу.И мне нужно определить поведение старых файлов, если истекает SESSION.


Спасибо всем за любые советы.

Ответы [ 3 ]

3 голосов
/ 13 мая 2011

Как ответили другие, сеансы хранятся по пути, определенному session.save_path в php.ini, и вы можете использовать этот каталог для получения списка каждой сессии.

альтернативный подход означало бы изменить хранилище сеанса и переместить его в базу данных, используя session_set_save_handler().Вы можете хранить все свои сессии в базе данных и делать с ней все, что пожелаете.

2 голосов
/ 13 мая 2011

Лучшее, что вы можете сделать, чтобы получить список всех существующих идентификаторов сеансов:

preg_grep("/^sess_/", scandir(ini_get("session.save_path")))

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

1 голос
/ 13 мая 2011

Я бы сделал это в старом проекте.

я назвал файлы с помощью session_id (что-то вроде этого: sessionid_some_file.tmp):

_TMP_PATH_: путь, по которому проверяются файлы.

foreach(new DirectoryIterator(_TMP_PATH_) as $file)
{
    if(preg_match('/(.*)_(.*)_(.*)\.tmp/', $file->getFilename(), $data))
    {
        session_write_close();
        $session_id = $data[1];
        session_id($session_id);
        session_start();
        if(empty($_SESSION))
        {
            unlink(_TMP_PATH_ . $file->getFilename()); 
        }
    }
}
session_write_close();

foreach файлыя получаю session_id, открываю его и проверяю, если что-то внутри.(я писал что-то после каждого открытого сеанса)

Но будьте осторожны, этот кусок кода никогда не был в рабочей среде.

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