{lang: ‘ru’}

memcache php, memcache, установка memcache, настройка memcachedСегодня мы будем говорить о кэшировании в PHP. Я покажу вам, как можно использовать Memcache PHP. Мы создадим полезный класс для работы с Memcache и рассмотрим несколько примеров. Memcache был разработан для уменьшения нагрузки на базу данных в больших динамических веб-приложениях.

Обратите внимание, что расширение Memcache не поставляется вместе с PHP по умолчанию. Это расширение доступно в PECL. Дополнительную информацию вы можете найти .

Скачать

Шаг 1. PHP

Я создал этот функциональный класс, который мы будем использовать для работы с Memcache.

classes/memcache.caching.php

<?

class CacheMemcache {

    var $iTtl = 600; // время жизни
    var $bEnabled = false; // Memcache работает?
    var $oCache = null;

    // конструктор
    function CacheMemcache() {
        if (class_exists('Memcache')) {
            $this->oCache = new Memcache();
            $this->bEnabled = true;
            if (! $this->oCache->connect('localhost', 11211))  { // вместо 'localhost' должен быть IP
                $this->oCache = null;
                $this->bEnabled = true;
            }
        }
    }

    // получение кеша
    function getData($sKey) {
        $vData = $this->oCache->get($sKey);
        return false === $vData ? null : $vData;
    }

    // сохранение в кеш
    function setData($sKey, $vData) {
        //используйте MEMCACHE_COMPRESSED для сжатия данных (zlib).
        return $this->oCache->set($sKey, $vData, 0, $this->iTtl);
    }

    // удаление из кеша
    function delData($sKey) {
        return $this->oCache->delete($sKey);
    }
}

?>

В этом классе я создал несколько полезных методов, которые мы будем использовать: getData, setData и delData. Сейчас рассмотрим 1 пример:

index.php

<?php

$aData = array(
    'name' => 'table',
    'color' => 'brown',
    'size' => array(
        'x' => 200,
        'y' => 120,
        'z' => 150,
    ),
    'strength' => 10,
);

require_once('classes/memcache.caching.php');
$oCache = new CacheMemcache();

echo 'Данные: <pre>'; // вывод данных
print_r($aData);
echo '</pre>';

if ($oCache->bEnabled) { // если Memcache работает

    $oCache->setData('my_object', $aData); // сохранение данных
    $oCache->setData('our_class_object', $oCache); // сохранение объекта класса

    echo 'Сохранено, нажмите <a href="index2.php">сюда</a> для просмотра данных';

} else {
    echo 'Memcache не установлен';
}

?>

В этом примере мы сохраняем 2 объекта в кеш память: массив и объект класса. Сейчас рассмотрим 2 пример:

index2.php

<?php

require_once('classes/memcache.caching.php');
$oCache = new CacheMemcache();

if ($oCache->bEnabled) { // если Memcache работает

    $aMemData = $oCache->getData('my_object'); // получение данных
    $aMemData2 = $oCache->getData('our_class_object'); // получение объекта класса

    echo 'Данные: <pre>';
    print_r($aMemData);
    echo '</pre>';

    echo 'Данные класса CacheMemcache: <pre>';
    print_r($aMemData2);
    echo '</pre>';

    echo 'Все данные прочитаны правильно, чтобы удалить их, нажмите <a href="index3.php">сюда</a>';

} else {
    echo 'Memcache не установлен';
}

?>

Здесь мы только читаем данные из памяти и, если видим данные на экране, то все прошло успешно. Сейчас рассмотрим последний пример:

index3.php

<?php

require_once('classes/memcache.caching.php');
$oCache = new CacheMemcache();

if ($oCache->bEnabled) { // если Memcache работает

    $oCache->delData('my_object'); // удаление данных
    $oCache->delData('our_class_object'); // удаление данных

    $aMemData = $oCache->getData('my_object'); // попытка получить данные
    $aMemData2 = $oCache->getData('our_class_object');

    echo 'Данные: <pre>';
    print_r($aMemData);
    echo '</pre>';

    echo 'Данные класса CacheMemcache: <pre>';
    print_r($aMemData2);
    echo '</pre>';

    echo 'Данные успешно удалены!';

} else {
    echo 'Memcache не установлен';
}

?>

Сегодня я рассказал, как использовать memcache php. Надеюсь, это поможет Вам оптимизировать свои сайты. Удачи в работе!


Получайте новые статьи блога прямо себе на почту