Описание - все закешированные данные хранятся в файлах в json формате.
- Установка
- Методы
- Memcache::connect — Открывает соединение с memcached сервером
- Memcache::pconnect — Открывает постоянное соединение с memcached сервером
- Memcache::addServer — Добавить memcached сервер в пул соединений
- Memcache::add — Добавить значение
- Memcache::set — Установить значение
- Memcache::replace — Заменить значение
- Memcache::get — Получить значение
- Memcache::increment — Инкрементирует значение
- Memcache::decrement — Декрементирует значение
- Memcache::delete — Удалить значение
- Memcache::flush — Сбросить все существующие значения на сервере
- Memcache::close — Закрывает соединение с memcached сервером
Для установки на сайт достаточно создать папку cache в любом месте проекта и в файле memcache.php указать путь до папки. Так же там можно изменить название папки и расширение файлов.
Для полноценной работы достаточно заинклюдить файл memcache.php в основном файле. После этого вы получите, поддержку стандартных функций memcache. Если же на сервере был ранее установлен memcache вы получите ошибку:Fatal error: Cannot redeclare "Название функции" in /path/to/memcache.php on line NUMMemcache поддерживает два типа работы. - Процедурный стиль - Объектно Ориентированный ``` $connect = memcache_connect('localhost',11211); memcache_set($connect, 'key_set', array('value1','value2')); print_r(memcache_get($connect, 'key_set')); ``` ``` $cache = new Memcache; // так же можно указать Memcached $cache->connect('localhost',11211); $cache->set('key_set', array('value1','value2')); print_r($cache->get('key_set')); ``` При желании можно структурировать кеш. Разложив его по папкам. Делается это при помощи **^ (caret)**
Например:
$cache->set('dir^file', array('value1','value2'));
Результат:
|
На самом деле все эти методы можно подразделить на 3 группы:
- Работа со значениями - Работа с серверами и соединениями - Получение информацииМетоды этой группы позволяют делать следующее:
- Устанавливать значения - Удалять эти значения - Заменять эти значения - Обращаться к этим значения по ключу - Управлять сроком жизни значений+ пара специфичных методов для инкремента и декремента целочисленных значений.
Фейковая функция существует только для совместимости.
bool Memcache::connect ( string $host [, int $port [, int $timeout ]] )- **string $host** - Хост Memcached. - **int $port** - порт, на котором Memcached слушает соединения. - **int $timeout** - Лимит в секундах, для подключения к демону. Подумайте дважды, прежде чем изменять значение по умолчанию 1 секунда - вы можете потерять все преимущества кэширования, если ваше соединение будет происходить слишком долго.
<?php
$cache = new Memcache();
$cache->connect('localhost', 11211, 30);
?>
Фейковая функция существует только для совместимости.
mixed Memcache::pconnect ( string $host [, int $port [, int $timeout ]] )- **string $host** - Хост Memcached. Этот параметр может также указать другие транспорты, как unix:///path/to/memcached.sock т.е. использовать UNIX сокеты, в этом случае порт должен быть установлен в 0. - **int $port** - порт, на котором Memcached слушает соединения. Установите этот параметр в 0, если предполагается использование сокетов. - **int $timeout** - Лимит в секундах, для подключения к демону. Подумайте дважды, прежде чем изменять значение по умолчанию 1 секунда - вы можете потерять все преимущества кэширования, если ваше соединение будет происходить слишком долго.
<?php
$cache = new Memcache();
$cache->pconnect('localhost', 11211, 30);
?>
Фейковая функция существует только для совместимости.
bool Memcache::addServer ( string $host [, int $port = 11211 [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool $status [, callable $failure_callback [, int $timeoutms ]]]]]]]] )- **string $host** - Хост Memcached. Этот параметр может также указать другие транспорты, как unix:///path/to/memcached.sock т.е. использовать UNIX сокеты, в этом случае порт должен быть установлен в 0. - **int $port** - порт, на котором Memcached слушает соединения. Установите этот параметр в 0, если предполагается использование сокетов. - **bool $persistent** - Устанавливает использование постоянного соединения. По умолчанию в значение TRUE. - **int $weight** - Чем больше, тем вероятнее, что данный сервер будет выбран для хранения значений. Т.е. это своеобразный "вес" сервера в общем пуле, косвенно это ещё и предполагаемая нагрузка на сервер. - **int $timeout** - Лимит в секундах, для подключения к демону. Подумайте дважды, прежде чем изменять значение по умолчанию 1 секунда - вы можете потерять все преимущества кэширования, если ваше соединение будет происходить слишком долго. - **int $retry_interval** - Устанавливает, как часто отказавший сервер будет опрашиваться, значение по умолчанию составляет 15 секунд. Установка этого параметра в -1 отключает автоматический повтор запросов. - **bool $status** - Помечает сервер как ONLINE. Установка этого параметра в FALSE и retry_interval -1 позволяет отказавшему серверу хранится в пуле активных серверов, чтобы не влиять на ключевые алгоритмы распределения. Обращения к этому серверу будут распределятся между оставшимися доступными серверами. По умолчанию значение TRUE, то есть сервер должен рассматриваться как ONLINE. - **callable $failure_callback** - Позволяет пользователю указать функцию обратного вызова для запуска при обнаружении ошибки. Функция должна принимать два параметра, имя хоста и порт вышедшего из строя сервера. - **string $timeoutms** - не описана.
Позволяют установить значение, задать сжатие и время жизни для этого значения. Единственное различие в поведении этих методов это то, что метод Memcache::add - вернёт FALSE, если значение с таким ключём уже установлена.
bool Memcache::add ( string $key, mixed $var [, int $flag [, int $expire ]] ) bool Memcache::set ( string $key, mixed $var [, int $flag [, int $expire ]] )- **string $key** - ключ значения, используя его мы оперируем значением. - **mixed $var** - значение. - **int $flag** - Флаг, указвающий, использовать ли сжатие в данном случае настоящего сжатия не производиться, так же можно использовать константы - **int $expire** - Время жизни значения(кэша). Если равно нулю, то бессрочно. Вы также можете использовать метку времени или количество секунд, начиная с текущего времени, но тогда число секунд, не может превышать 2592000 (30 дней).
<?php
$cache = new Memcache();
$cache->connect('localhost', 11211, 30);
$cache->add( 'myfirst', 1000, MEMCACHE_COMPRESSED, 15 );
$cache->set( 'mysecond', 2000, MEMCACHE_COMPRESSED, 15 );
?>
Перезаписать существующее значение.
Memcache::replace() должна использоваться, чтобы заменить существующее значение. В случае, если значение с таким ключом не существует, Memcache::replace() возвращает FALSE. В остальном Memcache::replace() ведет себя так же, как и Memcache::set(). Также можно использовать функцию memcache_replace()
string Memcache::replace ( string $key , mixed $var [, int $flag [, int $expire ]] )- **string $key** - ключ, значение которого нужно заменить. - **mixed $var** - новое значение. - **int $flag** - Флаг, указвающий, использовать ли сжатие (Здесь то и нужна Zlib) для сохраняемого значения, можно использовать константы - **int $expire** - Время жизни значения(кэша). Если равно нулю, то бессрочно. Вы также можете использовать метку времени или количество секунд, начиная с текущего времени, но тогда число секунд, не может превышать 2592000 (30 дней).
<?php
$cache = new Memcache();
$cache->connect('localhost', 11211, 30);
$cache->add( 'one', 111, 0, 15 );
$cache->add( 'two', 222, 0, 15 );
$cache->add( 'three', 333, 0, 15 );
$cache->replace( 'three', 777 );
print_r( $cache->get( array('one','two','three')) );
?>
Результат:
Array ( [one] => 111 [two] => 222 [three] => 777 )
Вернёт запрошенное значение или FALSE в случае неудачи, или, если значение с таким ключём ещё не установлено.
Можно передать массив ключей значений, тогда Memcache::get тоже вернёт массив, он будет содержать найденные пары ключ-значение.
string Memcache::get ( string $key [, int &$flags ] ) array Memcache::get ( array $keys [, array &$flags ] )- **string $key** - ключ значения, или массив ключей, значения которых нужно получить. - **int $flag** - назначение этого параметра осталось для меня тайной. Я пробовал использовать некоторые целочисленные значения, но это не дало ни какого эффекта. Да и примеры в основном даны без его использования, из чего мною сделан вывод: можно прекрасно работать и без него :)
<?php
$cache = new Memcache();
$cache->connect('localhost', 11211, 30);
$cache->add( 'myfirst', 1000, MEMCACHE_COMPRESSED, 15 );
$cache->set( 'mysecond', 2000, MEMCACHE_COMPRESSED, 15 );
print_r( $cache->get( array('myfirst','mysecond')) );
?>
Результат:
Array ( [myfirst] => 1000 [mysecond] => 2000 )
Увеличивает значение указанного ключа на указанное значение. Если значение указанного ключа не числовое и не может быть конвертировано в число, то оно изменит свое значение на значение, указанное как второй параметр. Memcache::increment() не создает элемент, если он еще не существует.
int Memcache::increment ( string $key [, int $value = 1 ] )- **string $key** - ключ, значение которого нужно инкрементировать. - **int $value** - значение инкремента.
<?php
$cache = new Memcache();
$cache->connect('localhost', 11211, 30);
$cache->set( 'someOne', 10, 0, 5 );
$cache->increment( 'someOne', 10, 0, 5 );
$cache->increment( 'someOne', 10, 0, 5 );
echo $cache->get('someOne');// выведет 30
?>
Уменьшает значение указанного ключа на указанное значение. Аналогично Memcache::increment(), текущее значение элемента преобразуется в числовое и после этого уменьшается
int Memcache::decrement ( string $key [, int $value = 1 ] )- **string $key** - ключ, значение которого нужно декрементировать. - **int $value** - значение декремента.
Удалить значение из кэша.
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
string Memcache::delete ( string $key [, int $timeout = 0 ] )- **string $key** - ключ значение, которого нужно удалить. - **int $timeout** - Этот параметр так же устарел и не поддерживается, по умолчанию равен 0 секунд. Не используйте этот параметр.
Memcache::flush() удаляет полностью все каталоги и файлы из папки cache
bool Memcache::flush ( void )
Пример ниже не выведет ничего.
``` connect('localhost', 11211, 30);$cache->set( 'someOne', 111, 0, 5 ); $cache->set( 'someTwo', 222, 0, 5 ); $cache->set( 'someTree', 333, 0, 5 );
$cache->flush(); //Очистит кэш
print_r( $cache->get( array('someOne','someTwo','someTree')) ); ?>
<h3><a name="close">Memcache::close()</a></h3>
<p>Фейковая функция существует только для совместимости. Также можно использовать функцию memcache_close().</p>
<pre>
bool <strong>Memcache::close</strong> ( void )
</pre>