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