Сегодня мы будем говорить о кэшировании в 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. Надеюсь, это поможет Вам оптимизировать свои сайты. Удачи в работе!
Получайте новые статьи блога прямо себе на почту