Memcache*d
Возможно ваш кэш не работает
Если у вас есть модуль "Кэширование" и вы используете memcache или memcached, возможно он у вас не работает или работает не правильно, даже если модуль и включен.
Ниже приведен код для проверки правильной работы
<?php
$driver = Core::$mainConfig['defaultCache'];
$aConfig = Core::$config->get('core_cache', array());
$config = $aConfig[$driver];
if($driver == 'memcache')
{
if(extension_loaded('memcache'))
{
$memcache = new Memcache();
$memcache->connect($config['server'], $config['port']);
$return = $memcache->set('TEST', 123, MEMCACHE_COMPRESSED, 120);
$message = ($return ? 'SUCCESS' : 'ERROR');
echo $message . "<br />";
print_r($memcache->getStats());
echo "<br />";
}
else
{
echo "Memcache not available!<br />";
}
}
elseif($driver == 'memcached')
{
if(extension_loaded('memcached'))
{
$memcached = new Memcached();
$memcached->addServer($config['server'], $config['port']);
$memcached->set('TEST', 123, 120);
$message = $memcached->getResultMessage();
echo $message . "<br />";
print_r($memcached->getStats());
echo "<br />";
}
else
{
echo "Memcached not available!<br />";
}
}Если вы НЕ видите SUCCESS значит запись в кэш не работает, соответственно кэширование у вас на сайте не работает.
Если вы видите SUCCESS то в статистике стоит обратить на значения:
limit_maxbytes - параметр показывает максимальный объем памяти, которую Memcache*d может использовать для хранения значений (для магазинов рекомендуем минимум 128 Мб)
evictions — очень важный параметр, показывает количество объектов, которые пришлось удалить из хранилища для размещения там новых данных. Если он стал большим и все время растет, то имеет смысл оптимизировать использование памяти или добавить больше памяти для сервиса Memcache*d. get_hits - сколько раз мы взяли данные из кэша. get_misses - сколько раз мы пытались взять данные из кэша, но его там не было или время жизни кэша истекло. Отношение get_misses/get_hits показывает эффективность использования кэша. Чем оно меньше, тем эффективней используется кэш. Если у вас get_misses/get_hits >= 1, то значит вы делаете что-то не так (скорее всего ставите слишком малое время жизни кэша).
Максимальный размер записи данных по умолчанию 1 Мб, так что следует отслеживать какие данные у вас не попали в кэш, например через хук Core_Cache.onAfterSet
Последнее обновление