Использование memcached в качестве хранилища сессий с CodeIgniter - PullRequest
6 голосов
/ 11 апреля 2010

Я изучаю возможности использования memcached в качестве хранилища сессий для системы, построенной на CodeIgniter . Кто-нибудь делал это раньше (это, наверное, глупый вопрос :) и если да, то каков ваш опыт, ребята? Вы использовали какие-либо существующие библиотеки / расширения? Что касается улучшения производительности, что вы видели? Любые предостережения?

Ответы [ 3 ]

6 голосов
/ 11 апреля 2010

С помощью PHP поместить сеансы в Memcache напрямую, а не с помощью фреймворкового кода, легко - это просто изменение двух строк в PHP.ini:

# see http://php.net/manual/en/memcache.ini.php
session.save_handler = memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

При этом используется немного более старое (но все еще полностью поддерживаемое) расширение memcache из PECL.

1 голос
/ 11 апреля 2010

Вы можете выбрать CodeIgniter Multicache Library , которую можно найти здесь: http://www.haughin.com/code/multicache/

В коде вы можете использовать просто так:

$this->load->library('cache');
//To use memcache
$this->cache->useMemcache($iptomemcache, $port); /*if you want, you can check to see if the connection even worked, as this will return false if the connection failed.*/
$this->cache->save('testkey', 'testdata', NULL, 3600); /*caches the testdata string for 1 hour. */
echo $this->cache->get('testkey');
//To switch back to file based caching
$this->cache->useFile();
//etc.
0 голосов
/ 11 апреля 2010

Использование Memcached для хранения реляционных данных нецелесообразно (например, MySQL); было бы неэффективно запрашивать каждый элемент из Memcached, а затем проверять, соответствует ли он запросу. Существуют лучшие решения такой проблемы (например, рассмотрим таблицы памяти в MySQL).

С другой стороны, если вы ищете простое хранилище ключей / значений, это, безусловно, практичное приложение для Memcached. Однако я бы немного опасался писать для него драйвер CodeIgniter. Интерфейс для Memcached в PHP уже очень прост:

$memcached->get('my key');
$memcached->set('my key', 'my value');

Я бы предложил просто использовать классы Memcached напрямую. Добавление всей дополнительной служебной информации к CI кажется мне грязным и ненужным.

С другой стороны, я видел реализации Memcached, используемые для механизма сессий CodeIgniter. Это, безусловно, очень веская причина для написания драйвера, и я очень рекомендую его (сеансы - это боль в шее в масштабе).

Удачи

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