За последние 24 часа нас посетили 17982 программиста и 1696 роботов. Сейчас ищут 1592 программиста ...

Проблема с сессиями

Тема в разделе "Прочие вопросы по PHP", создана пользователем trofian, 2 май 2011.

  1. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    OMG
    PHP:
    1.  
    2. <?
    3.     public function sess_write($session_id, $session_data) {
    4.         return true;
    5.     }
    6.  
    PHP:
    1.  
    2. <?
    3.     public function __set($name, $val){
    4.         $sql = "SELECT `var_value` FROM " . $this->session_vars . " WHERE session_id='" . $this->native_sess_id . "' AND var_name='" . $name . "'";
    5.         $res = parent::select($sql);
    6.  
    а вы говорите - Попов мудак, делает запросы в цикле
     
  2. trofian

    trofian Активный пользователь

    С нами с:
    22 сен 2010
    Сообщения:
    10
    Симпатии:
    0
    Я делаю запросы в цикле?
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    нет. Ты делаешь до 2 запроса ради установки переменной, и 1 для получения переменной.
    Если надо просто добавить в сессию 10 переменных, надо сделать 20 (!) запросов. Даже WordPress для генерации главной страницы меньше делает.
    Но все еще хуже, чем кажется. После инициализации сессии, массив $_SESSION остается пустым. Т.е. я не могу работать с переменными нормальным образом и даже не знаю, какие переменные в сессии лежат.
    В то время, как достаточно записывать в БД $session_data, которую PHP передает в метод sess_write, и возвращать PHP эту строку обратно в методе sess_read.

    Какой цели следует назначение этого класса в session_save_handler? Инициализации сессии с помощью session_start(); вместо Session::sess_read($_COOKIE['PHPSESSID']); и удаление с помощью session_destroy(); вместо Session::sess_destroy(); и всё?