Как использовать apc и memcache в одном проекте?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

apc используеться примерно так

bEnabled = extension_loaded('apc');
    }
 
    // получаем данные с памяти
    function getData($sKey) {
        $bRes = false;
        $vData = apc_fetch($sKey, $bRes);
        return ($bRes) ? $vData :null;
    }
 
    // сохраняем данные в память
    function setData($sKey, $vData) {
        return apc_store($sKey, $vData, $this->iTtl);
    }
 
    // удаляем данные с памяти
    function delData($sKey) {
        $bRes = false;
        apc_fetch($sKey, $bRes);
        return ($bRes) ? apc_delete($sKey) : true;
    }
}
 'table',
    'color' => 'brown',
    'size' => array(
        'x' => 200,
        'y' => 120,
        'z' => 150,
    ),
    'strength' => 10,
);
 
require_once('classes/apc.caching.php');
$oCache = new CacheAPC();
 
echo 'Данные: <pre>'; // Посмотрим что мы имеем
print_r($aData);
echo '
’;
if ($oCache->bEnabled) { // Если APC доступен
 
    $oCache->setData('my_object', $aData); // Сохраняем данные в памяти
    $oCache->setData('our_class_object', $oCache); // Сохраняем объект класса в памяти
 
    echo 'По теории, мы сохранили данные в памяти, нажмите <a href="ndex2.php">здесь</a> для проверки, действительно ли все там.';
 
} else {
        echo 'Пакет APC не установлен, установите, а потом будете тестировать!';
}

memcache примерно тоже также.

apc — это кеш для байт-кода php, чтоб интерпретатор не интерпретировал каждый раз заново, а выполнял уже интерпретированный код из кеша, работает как модуль для php.

memcache — это хранилище ключ/значение в оперативной памяти, вешается на порт или unix-сокет.

почему тотже массив нельзя кешировать через memcache? как выбирать чем и когда кешировать?

еще один вопрос. когда оправдано использование этих технологий?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

если у вас не один апп-сервер — то лучше используйте мемкеш для данных, або будете потом фиксить трудноуловимые баги неконсистентности данных

еще один вопрос. когда оправдано использование этих технологий?

АРС — оправдано всегда, делается за 15 минут, а количество профита — бесконечно.

А насчёт мемкеша, сложно сказать без большей информации о проекте.

— что и зачем вы хотите кешировать\кешируете в мемкеше?
— какая инфраструктура? (количество серверов, их предназначение, конфигурация железа etc)
— какие базы данных используются?

— какова нагрузка?

Вероятнее всего, у вас стоит мускул. Если так, то при некоторых условиях мемкеш можно выкинуть и воспользоваться API для движков в режиме «ключ-значение», например, в виде плагина SocketHandler.

Вобщем, нужно больше информации.

почему тотже массив нельзя кешировать через memcache?

можно

как выбирать чем и когда кешировать?

это уж как вам удобно , apc локален и потому неудобен (теряется при перезагрузке апача), как и все shared mem решения, мемкеш удобнее, особенно если много php нод , можно еще redis — там фич больше, но ценой некоторых тормозов

когда оправдано использование этих технологий?

когда нужно получить выигрыш в скорости при обращении к тем же данным

Підписатись на коментарі