Тормозит Opencart часть 5 (memcached)

Тормозит Opencart часть 5 (memcached)

Мы потихоньку углубляемся в кеширование Opencart.

Давайте рассмотрим как осуществляется кеширование на уровне движка. После того как вы поставили магазин «из коробки», в качестве хранилища для данных, сохраняемых в кеш, будет использоваться диск вашего сервера. И в какой то момент, при большом количестве обрабатываемых файлов кеша, у вас опять могу начаться тормоза, но уже по причине физически медленной работы жестких дисков и файловой системы.

Но есть спасение. Использование расширения memcached для php. С помощью которого можно организовать хранение данных кеша не на жестком диске, а в оперативной памяти сервера,

Если у вас устанолен Memcached, его настройка займет не больше 10 минут.

для этого вам нужно найти файл /system/library/cache.php и заменить его содержание на:

После этого открываете файлы config.php в корне сайта и в папке /admin

и добавляете в них параметры вашего memcached-сервера (если вы их не знаете — обратитесь к хостеру или админу вашего сервера).

Если у вас все настроено правильно. Ваш движок будет сразу использовать память для хранения данных кеша. Если по каким то причинам, Memcached не сработает движок, будет использовать стандартную папку для хранения файлов.

Это решение подготовлено, благодаря дополнению UncleAndy c форума русской поддержки Opencart. Источник вы можете прочитать здесь.

В нашем решении мы добавили возможность сбрасывать полностью все данные в кеше, и на закуску выкладываем VQmod, с помощью которого нажатием кнопки из админки, вы сможете в случае необходимости полностью очистить весь кеш.

Cкачать файл 

Предыдущие статьи из цикла тормозит Opencart:
1 часть
2 часть
3 часть
4 часть

Хуйнаныр(3)Очко(0)

Запостить высер

Стучать мне на мыло
avatar

Сортировать:   Свежие | Тухлые | Хуйнанырные
Nik
робот-вертер
Nik
3 лет 6 месяцев назад

А как проверить работат ли корректно memcached?

Black Overlord
Magistr 80 level
3 лет 6 месяцев назад

Возьмите профайлер И посмотрите количество запросов при повторной генерации страницы — если оно уменьшается и файлы в папке с кешем не появились — значит все ок!

ogomor
робот-вертер
3 лет 2 месяцев назад

«Если у вас устанолен Memcached, его настройка займет не больше 10 минут.»

А как узнать установлен он или нет ?

Black Overlord
Magistr 80 level
3 лет 2 месяцев назад

Очень просто:
< ?php phpinfo(); ?>
И поискать блок Memcache. Если есть, значит установлен, даже настроки можно посмотреть

nik
робот-вертер
nik
3 лет 2 месяцев назад

Скажите, если уже еесть APC кеш, есть ли смысл смотреть в сторону мемкешеда? APC не совсем устраивает.

Black Overlord
Magistr 80 level
3 лет 2 месяцев назад

У вас недостаточное представление о методах кеширования.
APC — преобразует интерпретируемый скрипт в код низкого уровня. К кешированию промежуточных данных он не имеет никакого отношения. Увеличение скорости работы скриптов может дать прирост в 50-70мс, сколько вам может дать кеширование промежуточных данных в памяти — зависит от вашего сервера и настроек базы, но намного больше. Т.е. по большому счету это совершенно два разных тренда, кеширование скрипта и кеширование данных. И одно и другое имеет смысл, но прирост больший дает именно кеширование данных а не APC.

ФМыч
робот-вертер
ФМыч
3 лет 1 месяц назад

В очередной раз спасибо за статью!
После недельных танцев с бубнами удалось установить memcached на сервер, ну и соответственно прикрутить к нему OcStore. По ощущениям все работает еще быстрее, вместе с ТурбоКешем вообще пуляет! :)

Black Overlord
Magistr 80 level
3 лет 1 месяц назад

memcache не всегда спасает, все зависит от настроек и физических параметров сервера. Во многих случаях файловый кеш, ничем не хуже особенно на хостингах с SSD

ФМыч
робот-вертер
ФМыч
3 лет 1 месяц назад

Видимо рано я порадовался, теперь периодически на вебморде вываливается вот такая ошибка:
MemcachePool::get() [memcachepool.get]: Server localhost (tcp 11212, udp 0) failed with: Network timeout (0) in ххх/vqmod/vqcache/vq2-system_library_cache.php on line 22

Залез в указанный файл, а там следующая строка
return($this->memcache->get(MEMCACHE_NAMESPACE . $key, 0));

Black Overlord
Magistr 80 level
3 лет 1 месяц назад

А при чем файл, к тому что у вас скрипт не может подключиться к мемкешу. Гуглите почему то происходит и смотрите лог ошибок. Загуглите ошибку
MemcachePool::get() [memcachepool.get]: Server localhost (tcp 11212, udp 0) failed with: Network timeout (0)
Почему такое может происходить.

nadim
робот-вертер
nadim
2 лет 8 месяцев назад

Сделал как написано в этой статье но получил вместо сайта белый лист — кода на белой странице вообще нет. Что может быть? Сайт на OcStore 1.5.5.1.1

nadim
робот-вертер
nadim
2 лет 8 месяцев назад

Взял файл с первоисточника cache.php https://opencartforum.com/files/file/59-memcache-support/
Сразу все заработало.

nadim
робот-вертер
nadim
2 лет 8 месяцев назад

Вопрос снимается все заработало.

nadim
робот-вертер
nadim
2 лет 8 месяцев назад

Ваш мод для очистки кеша выдал Fatal error: Call to undefined method Cache::flush() in /www/vqmod/vqcache/vq2-admin_controller_common_home.php on line 11

Андрей
робот-вертер
Андрей
2 лет 7 месяцев назад

А мой хостер вообще только на VPS предоставляет параметры сервера memcash а у меня обычный хостинг. Что делать?((( Хотя там есть такая натсройка php как memcah но не спасает все равно.Может turbo cash поставить?

Black Overlord
Magistr 80 level
2 лет 7 месяцев назад

Напишите в скайп ocshop.support поможем вашему горю.

Роман
робот-вертер
Роман
2 лет 28 дней назад

Мне мой хостер написал : «Мы не используем memcash на виртуальных серверах, мы используем XCache для кеширования. Если Вам нужно memcash, тогда Вам нужно покупать ВПС сервер, где Вы можете установить memcash и использовать его.»
Мне можно помочь как-то ?

Black Overlord
Magistr 80 level
2 лет 16 дней назад

Напишите на почту info@ocshop.info
ваш скайп

Денис
робот-вертер
Денис
2 лет 1 месяц назад

Здравствуйте а если на вам известном хостинге Украина используется Сокет memcache и Сокет memcached
каккой модуль предпочтительней.
В вашем примере
define(‘CACHE_DRIVER’, ‘memcached’); — memcached ?? — memcache ??
define(‘MEMCACHE_HOSTNAME’, ‘localhost’); — а в хостнейме какой Сокет использовать
define(‘MEMCACHE_PORT’, ‘11211’); — тут будет 0
define(‘MEMCACHE_NAMESPACE’, ‘opencart_cache’); — тут без изменений кажется

Перерыл весь инет ну нету информации и хоть тресни.

Edemuse
робот-вертер
Edemuse
6 месяцев 20 дней назад

Чтобы не поливать грязью ребят, которые дали это замечательное решение: Когда копируете код присмотритесь в начало и конец кода для файла /system/library/cache.рhр: Там должны быть символы обрамления начала кода php, но в целях безопасности или по каким-то другим соображениям они изменены.

Далее: проверьте, чтобы у вас помимо самого memcaced был установлен php5-memcache. Именно php-5 memcache c memcache.ini на сервере, если используете Debian или Ubuntu. И самое главное — перезагрузите php5-fmp, если его используете.

Я делал так:

sudo service nginx restart
sudo service php-5 fpm restart
sudo service memcached restart

Сразу стало из Пушки стрелять. Надеюсь кому-то пригодится

Yoda
Magistr 80 level
6 месяцев 19 дней назад

Чтобы не поливать грязью ребят — полейте себя, КЭП!

Роман
робот-вертер
4 месяцев 2 дней назад
Доброго времени суток,мой сайт хоститься на ukraine.com.ua, и я столкнулся с такой проблемой, при настройке memcached по инструкции от ukraine.com.ua от получаю ошибку: Parse error: syntax error, unexpected ‘public’ (T_PUBLIC) in www/vqmod/vqcache/vq2-system_library_cache.php on line 72 в 72-й строке вижу public function set($key, $value) { global $config; if (extension_loaded(‘apc’) && $config->get(‘config_memory_cache’) == 1) { apc_store($key,serialize($value), $this->expire); } else if (extension_loaded(‘xcache’) && $config->get(‘config_memory_cache’) == 2) { xcache_set($key, serialize($value), $this->expire); } else { if ((CACHE_DRIVER == ‘memcached’) && $this->ismemcache) так же настраивал по этой инструкции, тоже была ошибка, но непомню какая точно, так как это было несколько месяцев назад, после чего я отложил… ЧЕТАТЬ ЕСТЧО
Yoda
Magistr 80 level
4 месяцев 18 часов назад

Да все там норм настраивается.

Роман
робот-вертер
3 месяцев 29 дней назад

Подскажите пожалуйста как настроить?
я заметил что в vq2-system_library_cache.php в 70-й строке добавляеться лишний символ }, но я не могу понять откуда он береться, так как в файле cache.php его нет

Yoda
Magistr 80 level
3 месяцев 27 дней назад

Не подскажу — надо смотреть ближе!

Роман
робот-вертер
3 месяцев 29 дней назад
ВОТ cache.php: expire = $exp; if (CACHE_DRIVER == ‘memcached’) { $mc = new Memcache; if ($mc->pconnect(MEMCACHE_HOSTNAME, MEMCACHE_PORT)) { $this->memcache = $mc; $this->ismemcache = true; }; }; $files = glob(DIR_CACHE . ‘cache.*’); if ($files) { foreach ($files as $file) { $time = substr(strrchr($file, ‘.’), 1); if ($time 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… ЧЕТАТЬ ЕСТЧО
wpDiscuz