Memcache*d
Если у вас есть модуль "Кэширование" и вы используете memcache или memcached, возможно он у вас не работает или работает не правильно, даже если модуль и включен.
Ниже приведен код для проверки правильной работы
1
<?php
2
3
$driver = Core::$mainConfig['defaultCache'];
4
$aConfig = Core::$config->get('core_cache', array());
5
$config = $aConfig[$driver];
6
7
if($driver == 'memcache')
8
{
9
if(extension_loaded('memcache'))
10
{
11
$memcache = new Memcache();
12
$memcache->connect($config['server'], $config['port']);
13
14
$return = $memcache->set('TEST', 123, MEMCACHE_COMPRESSED, 120);
15
$message = ($return ? 'SUCCESS' : 'ERROR');
16
echo $message . "<br />";
17
18
print_r($memcache->getStats());
19
echo "<br />";
20
}
21
else
22
{
23
echo "Memcache not available!<br />";
24
}
25
}
26
elseif($driver == 'memcached')
27
{
28
if(extension_loaded('memcached'))
29
{
30
$memcached = new Memcached();
31
$memcached->addServer($config['server'], $config['port']);
32
33
$memcached->set('TEST', 123, 120);
34
$message = $memcached->getResultMessage();
35
36
echo $message . "<br />";
37
38
print_r($memcached->getStats());
39
echo "<br />";
40
}
41
else
42
{
43
echo "Memcached not available!<br />";
44
}
45
}
Если вы НЕ видите
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
Last modified 7mo ago