Сегодня у меня есть еще одна интересная статья по 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/