Статьи

Кэширование APC с помощью PHP


Сегодня у меня есть еще одна интересная статья по PHP.
Мы будем говорить о кешировании и практике использования кеширования в php. Я рассмотрю кеширование APC и покажу, как вы можете использовать
APC в PHP . Мы подготовим для нас полезный класс для работы с APC и несколько примеров. Немного истории: давным-давно, когда компьютерные сети и веб-сайты только появлялись, большинство веб-сайтов были статичными (и все данные / файлы сохранялись на дисках). После этого люди изобрели «базу данных» для хранения данных. Это было отличное новшество.

Мы начали сохранять в базу данных все больше и больше, даже небольшие фрагменты данных. Прошли годы, размер сайтов вырос, и люди начали замечать, что производительность сайтов падает из-за слишком частого чтения данных из базы данных. И мы придумали новую стратегию оптимизации — кеширование (где мы храним данные в файлах кеша на сервере). Интересно, не правда ли? Это выглядит как «Вперед, в прошлое».
:-)

Но почему это произошло? Все просто — скорость жестких дисков увеличилась, даже превысила скорость работы баз данных. На данный момент я говорю о MySQL. Другие типы баз данных еще быстрее. Но в любом случае прогресс не стоит на месте. Теперь люди научились использовать память сервера для хранения данных. Оперативная память намного быстрее, чем жесткий диск, и цена памяти постоянно падает.

Сегодня я подготовил пример использования APC с PHP.

Live Demo

скачать в упаковке


Теперь загрузите исходные файлы и начните кодировать!


Шаг 1. PHP

Я сделал этот полезный класс для вас. Мы будем использовать этот класс для работы с памятью, используя систему кэширования APC.

классы / apc.caching.php

<?

class CacheAPC {

    var $iTtl = 600; // Time To Live
    var $bEnabled = false; // APC enabled?

    // constructor
    function CacheAPC() {
        $this->bEnabled = extension_loaded('apc');
    }

    // get data from memory
    function getData($sKey) {
        $bRes = false;
        $vData = apc_fetch($sKey, $bRes);
        return ($bRes) ? $vData :null;
    }

    // save data to memory
    function setData($sKey, $vData) {
        return apc_store($sKey, $vData, $this->iTtl);
    }

    // delete data from memory
    function delData($sKey) {
        $bRes = false;
        apc_fetch($sKey, $bRes);
        return ($bRes) ? apc_delete($sKey) : true;
    }
}

?>

Я подготовил здесь несколько необходимых функций, которые мы будем использовать: getData, setData и delData. Теперь давайте проверим первый пример файла:

index.php

<?php

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

require_once('classes/apc.caching.php');
$oCache = new CacheAPC();

echo 'Initial data: <pre>'; // lets see what we have
print_r($aData);
echo '</pre>';

if ($oCache->bEnabled) { // if APC enabled

    $oCache->setData('my_object', $aData); // saving data to memory
    $oCache->setData('our_class_object', $oCache); // saving object of our class into memory too

    echo 'Now we saved all in memory, click <a href="ndex2.php">here</a> to check what we have in memory';

} else {
    echo 'Seems APC not installed, please install it to perform tests';
}

?>

В этом файле вы видите, что я сохраняю 2 объекта в памяти: некоторый предопределенный массив и объект класса. Теперь давайте проверим второй пример файла:

index2.php

<?php

require_once('classes/apc.caching.php');
$oCache = new CacheAPC();

if ($oCache->bEnabled) { // if APC enabled

    $aMemData = $oCache->getData('my_object'); // getting data from memory
    $aMemData2 = $oCache->getData('our_class_object'); // getting data from memory about our class

    echo 'Data from memory: <pre>'; // lets see what we have from memory
    print_r($aMemData);
    echo '</pre>';

    echo 'Data from memory of object of CacheAPC class: <pre>';
    print_r($aMemData2);
    echo '</pre>';

    echo 'As you can see - all data read successfully, now lets remove data from memory and check results, click <a href="index3.php">here</a> to continue';

} else {
    echo 'Seems APC not installed, please install it to perform tests';
}

?>

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

index3.php

<?php

require_once('classes/apc.caching.php');
$oCache = new CacheAPC();

if ($oCache->bEnabled) { // if APC enabled

    $oCache->delData('my_object'); // removing data from memory
    $oCache->delData('our_class_object'); // removing data from memory

    $aMemData = $oCache->getData('my_object'); // lets try to get data again
    $aMemData2 = $oCache->getData('our_class_object');

    echo 'Data from memory: <pre>'; // lets see what we have from memory
    print_r($aMemData);
    echo '</pre>';

    echo 'Data from memory of object of CacheAPC class: <pre>';
    print_r($aMemData2);
    echo '</pre>';

    echo 'As you can see - all data successfully removed. Great !';

} else {
    echo 'Seems APC not installed, please install it to perform tests';
}

?>
Live Demo
скачать в архиве

Вывод

Сегодня я рассказал вам, как мы можем использовать память сервера с кэшированием APC. Я надеюсь, что вы поделитесь своими мыслями об оптимизации вашего сайта (ов). Например, вы можете кэшировать некоторые часто используемые данные (информацию о пользователях в вашей системе, некоторые настройки веб-сайта и т. Д.) Удачи в вашей работе!


Источник:
http://www.script-tutorials.com/how-to-use-apc-caching-with-php/