Хранение PHP-сессий в кэше xCache

Vladimir
Опубликовано в: PHP

Снижаем нагрузку на сервер баз данных

Продолжение статьи «Хранение PHP-сессий в базе данных».

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

В данной статье мы рассмотрим хранение сессий PHP в кэше xCache (изменения в коде для использования APC/eAccelerator будут минимальными).

Вся теория рассмотрена в этой статье, поэтому переходим непосредственно к реализации.

Внимание: приведённый код предназначен для PHP 5.

<?php

    final class xCacheSessionHandler
    {
        public static function instance()
        {
            static $self = false;
            if (false === $self) {
                $self = new xCacheSessionHandler();
            }

            return $self;
        }

        private function __construct()
        {
            session_set_save_handler(
                array(__CLASS__, 'open'),
                array(__CLASS__, 'close'),
                array(__CLASS__, 'read'),
                array(__CLASS__, 'write'),
                array(__CLASS__, 'destroy'),
                array(__CLASS__, 'gc')
            );
        }

        public function __destruct()
        {
            session_write_close();
        }

        public static function open($save_path, $session_name)
        {
            return true;
        }

        public static function close()
        {
            return true;
        }

        public static function read($session_id)
        {
            return (string)xcache_get("session/{$session_id}");
        }

        public static function write($session_id, $session_data)
        {
            return xcache_set("session/{$session_id}", $session_data, (int)get_cfg_var('session.gc_maxlifetime'));
        }

        public static function destroy($session_id)
        {
            xcache_unset("session/{$session_id}");
            return true;
        }

        public static function gc($max_lifetime)
        {
            return true;
        }
    }

?>

Пример использования:

[-]
View Code PHP
xCacheSessionHandler::instance();
session_start();
// Дальше как обычно
Добавить в закладки

Связанные записи

19
Сен
2009

Комментарии к статье «Хранение PHP-сессий в кэше xCache»  »

К статье «Хранение PHP-сессий в кэше xCache» комментариев пока нет. Не хотите ли стать первым?

Подписаться на RSS-ленту комментариев к статье «Хранение PHP-сессий в кэше xCache» Trackback URL: http://blog.sjinks.org.ua/php/640-storing-php-sessions-in-xcache/trackback/

Оставить комментарий к записи «Хранение PHP-сессий в кэше xCache»

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, Вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя