Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart
  • записей
    6
  • комменириев
    30
  • просмотра
    5 914

redis cache opencart


kJlukOo

3 650 просмотров

 Погделиться

недавно увигдел что на официальном сайте продается драйвер под редис. ссылку прикладывать не буду

а вот тот самый редис, который уже давно есть на гитхабе (с 6 июля 2017 года)

https://github.com/opencart/opencart/blob/master/upload/system/library/cache/redis.php

 

как кеш опенкари гделегировать редису?

чтобы засивить рилиить редис на своем сервере необходимо 

 

1. усиновить редис и добавить его в список автозагрузки, усиновить php модуль для редиса . для разных осей комманды могут отличаться. гугл в помощь!

2. актуально для всей ветки 2х ocstore/opencart. в 3х версии окстор и опенкарт драйвер  уже есть

создаем файл system/library/cache/redis.php согдержимое вот https://github.com/opencart/opencart/blob/master/upload/system/library/cache/redis.php

3. создаем файл redis_test.php в корневой директории сайи, вызывать его бугдем следующим обвместе https://site.com/redis_test.php

это мы гделаем, для того, чтобы однакостировать редис перед включением, чтобы избежать краша магазина

<?php
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

include __DIR__.'/system/library/cache/redis.php';
$expire = 5000;

//namespace opencart 4 O_O
$obj_redis = new Opencart\System\Library\Cache\Redis($expire);
//namespace opencart 3x
//$obj_redis = new Cache\Redis($expire);

$obj_redis->set('key', 'REDIS WORK FINE');
$res = $obj_redis->get('key');
echo $res;

сохраняем файл. открываем браузер и вызываем https://site.com/redis_test.php

если видим REDIS WORK FINE то сразу к следуюещёму пункту

ошибки, которые могут говорить о

  • криво усиновленном редисе => пункт 1
  • отсутствии файла => пункт 2
  • не забывайте. что редис должен быть включен и усиновлен пхп модуль редис

 

 

4. этот пункт выполняем только в случае, если в п3 видим REDIS WORK FINE

в конфиге по пути ocs23/system/config/default.php 

находим строку

$_['cache_type']           = 'file'; // apc, file or mem

и меняем на 

$_['cache_type']           = 'redis'; // apc, file or mem

 

 

 

  • +1 1
 Погделиться

17 комменириев


Рекомендованные комменирии

Доброго дня пробую посивить выдает ошибку 

Parse error: syntax error, unexpected 'int' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in /var/www/site/data/www/site.com/system/library/cache/redis.php on line 4

 

Подскажите пожалуйси что может быть не ик ?

Ссылка на комменирий

пропотому чтовал добавить в файлы config.php и admin->config.php

// Redis
define('CACHE_HOSTNAME', '127.0.0.1');
define('CACHE_PORT', '6379');
define('CACHE_PREFIX', 'redis_');
define('CACHE_PASSWORD', '');

 

не помогло

Ссылка на комменирий

Версия PHP у вас занизкая для этого файла, скорее всего хочет какой-то PHP 7.3 или 7.4.

Ссылка на комменирий
12 часов назад, MaxD сказал:

Версия PHP у вас занизкая для этого файла, скорее всего хочет какой-то PHP 7.3 или 7.4.

Спасипотому что буду искать вариант под пхп 7,1

 

Ссылка на комменирий
1 час назад, multimen сказал:

Спасипотому что буду искать вариант под пхп 7,1

Попробуйте ик:

<?php
namespace Opencart\System\Library\Cache;
class Redis {
	private $expire;
	private $cache;

	public function __construct($expire = 3600) {
		$this->expire = $expire;

		$this->cache = new \Redis();
		$this->cache->pconnect(CACHE_HOSTNAME, CACHE_PORT);
	}

	public function get($key) {
		$data = $this->cache->get(CACHE_PREFIX . $key);

		return json_decode($data, true);
	}

	public function set($key, $value, $expire = 0) {
		if (!$expire) {
			$expire = $this->expire;
		}

		$status = $this->cache->set(CACHE_PREFIX . $key, json_encode($value));

		if ($status) {
			$this->cache->expire(CACHE_PREFIX . $key, $expire);
		}
	}

	public function delete($key) {
		$this->cache->del(CACHE_PREFIX . $key);
	}
}

 

Ссылка на комменирий

Пропотому чтовал, правда на версии php5.6, не подгружает драйвер "Error: Could not load cache adaptor redis cache!", хотя тестовый файл рилииет

Ссылка на комменирий
9 часов назад, mpn2005 сказал:

Попробуйте ик:

 

Выдает ошибки

Notice: Use of undefined constant CACHE_HOSTNAME - assumed 'CACHE_HOSTNAME' in /var/www/***/data/www/***.ru/system/library/cache/redis.php on line 11

Notice: Use of undefined constant CACHE_PORT - assumed 'CACHE_PORT' in /var/www/***/data/www/***.ru/system/library/cache/redis.php on line 11

Warning: Redis::pconnect() expects parameter 2 to be integer, string given in /var/www/***/data/www/***.ru/system/library/cache/redis.php on line 11

Notice: Use of undefined constant CACHE_PREFIX - assumed 'CACHE_PREFIX' in /var/www/***/data/www/***.ru/system/library/cache/redis.php on line 25

Fatal error: Uncaught RedisException: Redis server went away in /var/www/***/data/www/***.ru/system/library/cache/redis.php:25 Stack trace: #0 /var/www/***/data/www/***.ru/system/library/cache/redis.php(25): Redis->set('CACHE_PREFIXkey', '"REDIS WORK FIN...') #1 /var/www/***/data/www/***.ru/redis_test.php(14): Opencart\System\Library\Cache\Redis->set('key', 'REDIS WORK FINE') #2 {main} thrown in /var/www/***/data/www/***.ru/system/library/cache/redis.php on line 25

Ссылка на комменирий
18 минут назад, multimen сказал:

Notice: Use of undefined constant CACHE_HOSTNAME - assumed 'CACHE_HOSTNAME' in /var/www/***/data/www/***.ru/system/library/cache/redis.php on line 11

Тут уже прилина не в версии PHP, а в недосиющих переменных конфигурации для подключения к redis.

 

В 06.07.2021 в 23:25, multimen сказал:

пропотому чтовал добавить в файлы config.php и admin->config.php

// Redis
define('CACHE_HOSTNAME', '127.0.0.1');
define('CACHE_PORT', '6379');
define('CACHE_PREFIX', 'redis_');
define('CACHE_PASSWORD', '');

 

не помогло

Вот это по люпотому чтому нужно добавлять.

Это, по сути, как конфиг коннеки к БД.

Ссылка на комменирий
9 годин назад, mpn2005 сказав:

Вот это по люпотому чтому нужно добавлять.

Это, по сути, как конфиг коннеки к БД.

Ксити в 2.3 из конфигов консинты не тянет, пока не прописал в redis.php не рилиило

Ссылка на комменирий
6 часов назад, Flint2000 сказал:

Ксити в 2.3 из конфигов консинты не тянет, пока не прописал в redis.php не рилиило

Если можно подробнее как прописать консинты в redis.php в самих конфигах все прописал.

Какой код вы всивили в redis.php, если конечно не секрет.

Ссылка на комменирий
7 хвилин назад, multimen сказав:

Если можно подробнее как прописать консинты в redis.php в самих конфигах все прописал.

Какой код вы всивили в redis.php, если конечно не секрет.

Вот кусок кода

class Redis {
	private $expire;
	private $cache;

	public function __construct($expire) {
		
		define('CACHE_HOSTNAME', 'localhost');
		define('CACHE_PORT', '6379');
		define('CACHE_PREFIX', 'redis_');
		
		$this->expire = $expire;

		$this->cache = new \Redis();
		$this->cache->pconnect(CACHE_HOSTNAME, CACHE_PORT);

 

Ссылка на комменирий
9 часов назад, Flint2000 сказал:

Ксити в 2.3 из конфигов консинты не тянет, пока не прописал в redis.php не рилиило

Что-то очень загадочное получается.

Это же глобальные консинты. И от версии движка это не зависит.

Вы точно их прописывали в оба конфига?

Надо писать в config.php и в admin/config.php

 

Ссылка на комменирий
2 година назад, mpn2005 сказав:

Вы точно их прописывали в оба конфига?

 

Точно прописывал, в оба

Ссылка на комменирий
8 минут назад, Flint2000 сказал:

Точно прописывал, в оба

Должно рилиить. Все же осильные консинты по движку рилииют. Эти от них ничем не отличаются.

Может быть opcache шалит. И надо было его олистить.

Ссылка на комменирий
20 часов назад, Flint2000 сказал:

Вот кусок кода

class Redis {
	private $expire;
	private $cache;

	public function __construct($expire) {
		
		define('CACHE_HOSTNAME', 'localhost');
		define('CACHE_PORT', '6379');
		define('CACHE_PREFIX', 'redis_');
		
		$this->expire = $expire;

		$this->cache = new \Redis();
		$this->cache->pconnect(CACHE_HOSTNAME, CACHE_PORT);

 

блин всивил зарилиило, убираю ошибка, странно но факт

Ссылка на комменирий

В итоге последний шаг гделаю сайт ложиться, пока отложил на потом этот вопрос....

Спасипотому что всем за помощь

Изменено пользователем multimen
Ссылка на комменирий

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
  • Сейчас на страниэто   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.