Какое кэширование вы используете?
поставил memcached на сервер, выставил соответствующие настройки в CMS
на сервере крутятся 2 сайта на базе ICMS 2
в итоге получилось что оба сайта стали одинаковыми
такое ощущение, что один закэшировался, а второй подтягивает кэш от первого
это у меня сервере что-то неправильно или это баг в CMS?
Класс, не пробовал так))) А народ мучается как два сайта с одной базой связать ))))) Включите КЭШ!!!
для чистоты эксперимента хорошо бы повторить подобное тестирование на другом сервере
Не смотрел, как это реализовано в двойке, у меня так, может пригодится:
define('CACHE_DRIVER', 'memcached');
define('MEMCACHE_HOSTNAME', 'localhost');
define('MEMCACHE_PORT', '11211');
define('MEMCACHE_NAMESPACE', 'site123');
<?php
final class Cache {
private $expire;
private $memcache;
private $ismemcache = false;
public function __construct($exp = 3600) {
$this->expire = $exp;
if (CACHE_DRIVER == 'memcached')
{
$mc = new Memcache;
if ($mc->pconnect(MEMCACHE_HOSTNAME, MEMCACHE_PORT))
{
$this->memcache = $mc;
$this->ismemcache = true;
};
};
if (!$this->ismemcache)
{
$files = glob(DIR_CACHE. 'cache.*');
if ($files) {
foreach ($files as $file) {
$time = substr(strrchr($file, '.'), 1);
if ($time < time()) {
if (file_exists($file)) {
@unlink($file);
}
}
}
}
}
}
public function get($key) {
if ((CACHE_DRIVER == 'memcached') && $this->ismemcache)
{
return($this->memcache->get(MEMCACHE_NAMESPACE. $key, 0));
}
else
{
$files = glob(DIR_CACHE. 'cache.'. $key. '.*');
if ($files) {
foreach ($files as $file) {
$cache = '';
$handle = fopen($file, 'r');
if ($handle) {
$cache = fread($handle, filesize($file));
fclose($handle);
}
return unserialize($cache);
}
}
}
}
public function set($key, $value) {
if ((CACHE_DRIVER == 'memcached') && $this->ismemcache)
{
$this->memcache->set(MEMCACHE_NAMESPACE. $key, $value, 0, $this->expire);
}
else
{
$this->delete($key);
$file = DIR_CACHE. 'cache.'. $key. '.'. (time() + $this->expire);
$handle = fopen($file, 'w');
fwrite($handle, serialize($value));
fclose($handle);
};
}
public function delete($key) {
if ((CACHE_DRIVER == 'memcached') && $this->ismemcache)
{
$this->memcache->delete(MEMCACHE_NAMESPACE. $key);
}
else
{
$files = glob(DIR_CACHE. 'cache.'. $key. '.*');
if ($files) {
foreach ($files as $file) {
if (file_exists($file)) {
@unlink($file);
clearstatcache();
}
}
}
}
}
}
?>
Поищите подобное в двойке, это другая кмс
glutezneff, а что это за файл? как называется?
вот только нифига не понимаю что в нем править нужно...
<?php class cmsCacheMemory { private $memcache; public function set($key, $value, $ttl){ $ns_value = $this->getNamespaceValue($ns); } public function has($key){ return true; } public function get($key){ $ns_value = $this->getNamespaceValue($ns); $value = $this->memcache->get($key); if (!$value) { return false; } } public function clean($ns=false){ if ($ns){ return $this->memcache->increment("namespace:{$ns}"); } else { } } public function start(){ $config = cmsConfig::getInstance(); $this->memcache = new Memcache; $this->memcache->connect($config->cache_host, $config->cache_port) or die('Memcache connect error'); return true; } public function stop(){ $this->memcache->close(); return true; } private function getNamespaceAndKey($key){ } private function getNamespaceValue($ns){ $ns_value = $this->memcache->get("namespace:{$ns}"); if($ns_value===false) { $ns_value = 1; $this->memcache->set("namespace:{$ns}", $ns_value, false, 86400); } return $ns_value; } }
Сначала чтобы просто проверить, что заработает как надо.
там всего три вхождения "namespace:", их и надо заменить.
А кэш очистили после этого?заменил. не помогло.
давайте про конфиг? что включено? все ли по дефолту? сервак самосбор или что?
А кэш очистили после этого?заменил. не помогло.
давайте про конфиг? что включено? все ли по дефолту? сервак самосбор или что?
кэш очистил
какой именно конфиг?
почти все по дефолту
серввер — Debian Wheezy (64) + ISP Manager Lite
Спасибо!
а зачем это нужно? поясните пожалуйста.Разместив в файле index в самом низу код