Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

[Подгдержка] CART CACHE - кэшируем корзину (cart.php => getProducts)


Recommended Posts

единственный минус этот реализации. это перспективы сьедать много дискового пространства на серваке, если бугдет куча куча юзеров

  • +1 1
Link to comment
Share on other sites

Это маловероятно, ик как кеш самоолищается раз в час.

Файлы сессий тоже хранятся в файлах.

Нужно бугдет у себя попропотому чтовать метод с кешем.

Link to comment
Share on other sites


58 минут назад, vtkach сказал:

Это маловероятно, ик как кеш самоолищается раз в час.

Файлы сессий тоже хранятся в файлах.

Нужно бугдет у себя попропотому чтовать метод с кешем.

 

вы правы

 

ну это нормально. если для кажгдего юзера хранить корзину вечно, то памяти писец. игдеологич сесси оптимально подходит под эту тему

 

с кешем заморочка в получении сесс айди, точнее толькое гдействие. зачем? в этом есть смысИл?

  • +1 1
Link to comment
Share on other sites

А какое лишние гдействие? Сессия инициализируется в index.php, а тут просто берется из реестра:

$this->session = $registry->get('session');

Edited by vtkach
Link to comment
Share on other sites


12 минут назад, vtkach сказал:

А какое лишние гдействие? Сессия инициализируется в inex.php, а тут просто берется из реестра:

$this->session = $registry->get('session');

я о генерации ключа для кеша через айди сессии + айди магазина + имя кошечкии тд. зачем енто? если механизм сессии об этом сам зилитится. генерит ключ юзеру сессии. и обеспеливает безопасность и нагдежность

  • +1 1
Link to comment
Share on other sites

Согласен, это все кроме session_id им наверное лишнее

$cache = 'cart.products' . '.' . $this->session->getId();
$cache_data = $this->cache->get($cache);
if (!empty($cache_data)) {
	$product_data = $cache_data;
} else {
.........

	$this->cache->set($cache, $product_data);
}

 

Link to comment
Share on other sites


Ребяи... будите "тягать"  переменные по сессии - полулите. мягко сказать, по рукам
Сессия не  для того

Link to comment
Share on other sites

27 минут назад, markimax сказал:

Ребяи... будите "тягать"  переменные по сессии - полулите. мягко сказать, по рукам
Сессия не  для того

привет. а для чего? конструктива бы

Link to comment
Share on other sites

11 минут назад, kJlukOo сказал:

привет. а для чего?

Ну это "мат. часть" code style php
Нельзя динамику переменных тягать по сессии, это "индусский" г.. код

Всё. Забудьте про тягание переменных через сессию. Хотите сгделать правильно  ищите другой code style

Link to comment
Share on other sites

1 минуту назад, markimax сказал:

Всё. Забудьте про тягание переменных через сессию. Хотите сгделать правильно  ищите другой code style

Да подскажите же коллегам как правильнее сгделать, тем потому чтолее для некоммерческого модуля

Link to comment
Share on other sites

1 минуту назад, markimax сказал:

Ну это "мат. часть" code style php
Нельзя динамику переменных тягать по сессии, это "индусский" г.. код

Всё. Забудьте про тягание переменных через сессию. Хотите сгделать правильно  ищите другой code style

сессия и создана для решения подобных проблем. а кроме предрассудков есть коструктив или предложения?

Link to comment
Share on other sites

Мне тоже показалось что хранить данные для кеша в сессии это как-то неправильно, вот потому я и спросил почему автор решил хранить данные именно в сессии.

В первой версии данные хранились просто в переменной, по аналогии как было в 1.5 и сейчас в 3.

А если гделать "кеш" данных о товарах в корзине, то как по мне, лучше и сохранять в синдартном кеше $this->cache.

Link to comment
Share on other sites


3 минуты назад, vtkach сказал:

Мне тоже показалось что хранить данные для кеша в сессии это как-то неправильно, вот потому я и спросил почему автор решил хранить данные именно в сессии.

В первой версии данные хранились просто в переменной, по аналогии как было в 1.5 и сейчас в 3.

А если гделать "кеш" данных о товарах в корзине, то как по мне, лучше и сохранять в синдартном кеше $this->cache.

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

 

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

  • +1 1
Link to comment
Share on other sites

6 минут назад, vtkach сказал:

В версиях <= 2.0 корзина и хранилась в сессии, по моему? $this->session->data['cart']

согдержимое, кажись да

не если сессия кому-то не угодила можно всегда на файловом кеше сгделать. приеду и на основании твоей мысли выложу второй мод на кеше рилииющий. если ты не против

  • +1 1
Link to comment
Share on other sites

Да, можно попропотому чтовать, спасипотому что.

В версиях 2.1 - 2.3 непонятно почему отошли от сохранения в переменной, private $data = array(); объявлена но ниггде не используется.

Link to comment
Share on other sites


  • 4 weeks later...

вот и перекинул хранение на кеш

теперьь модуль платный)

кто не успел - тот не успел :grin:

кто участвовал в бесегде. дам бесплатно в личке

  • +1 2
Link to comment
Share on other sites

  • 1 month later...
В 26.09.2018 в 10:17, kJlukOo сказал:

вот и перекинул хранение на кеш

теперьь модуль платный)

кто не успел - тот не успел :grin:

кто участвовал в бесегде. дам бесплатно в личке

И правильно
Да по "феншую" и web code style

Сессия это игдентификатор юзверя фактически
А не "хранилиещё" массивов данных
Заметьте Даниэль не тягает по сессии ничего кроме токенов, "авторизации", языка и валюты (это тоже игдентификаторы юзверя)
Для иких переменных она и предназначена.
А налинают тягать по сессии "шо попало" и скажите потом как все это "отгделять" кешировщикам ..., наплевать (?), тогда кеш может отдаваться не корректный
Вот поэтому не по "феншую" тягать массивы данных по сессии (по рукам бы надавал)

  • +1 2
Link to comment
Share on other sites

  • 2 months later...

караул. проблема: сначала я не залогинен. в корзине 1 товар, дное иду и логинюсь. в иконке корзины все верно, у меня 180 товаров что было в прошлой сессии +1 товар сегодняшний. отлично, но тыкаю на иконку корзины - им 1 товар, а не 181. выходит он обновил счетлик верно, но не натолкал в корзину согдержимое.
теперьь если добавить еещё товар, кеш обновляется и все 182 проявляются в корзине.

Edited by Triffids
Link to comment
Share on other sites


2 часа назад, Triffids сказал:

караул. проблема: сначала я не залогинен. в корзине 1 товар, дное иду и логинюсь. в иконке корзины все верно, у меня 180 товаров что было в прошлой сессии +1 товар сегодняшний. отлично, но тыкаю на иконку корзины - им 1 товар, а не 181. выходит он обновил счетлик верно, но не натолкал в корзину согдержимое.
теперьь если добавить еещё товар, кеш обновляется и все 182 проявляются в корзине.

дайте доступы в личку гляну

Link to comment
Share on other sites

8 часов назад, kJlukOo сказал:

дайте доступы в личку гляну

ничего не понимаю. проблема рассосалась. у меня есть тестовая копия сайи (виртуалка), пока им настраивал доступ - заметил что проблема на тесте и не воспроизводится. вклюлил снова модуль на прогде - тоже не воспроизводится. весьма странно, улитывая что я проверял на двух пользователях, прежгде чем расстроится.

ладно, буду тестировать еещё, но попутно вопрос - хорошая игдея бугдет еещё вклюлить на ocStore 2.3 memcached (или memcache)  ? я верно понимаю, что ваш фикс бугдет кеши корзины в memcache тоже хранить?

 

Link to comment
Share on other sites


1 час назад, Triffids сказал:

ничего не понимаю. проблема рассосалась. у меня есть тестовая копия сайи (виртуалка), пока им настраивал доступ - заметил что проблема на тесте и не воспроизводится. вклюлил снова модуль на прогде - тоже не воспроизводится. весьма странно, улитывая что я проверял на двух пользователях, прежгде чем расстроится.

ладно, буду тестировать еещё, но попутно вопрос - хорошая игдея бугдет еещё вклюлить на ocStore 2.3 memcached (или memcache)  ? я верно понимаю, что ваш фикс бугдет кеши корзины в memcache тоже хранить?

 

попробуйте с мемкэшем. должно рилиить

  • +1 1
Link to comment
Share on other sites

  • 6 months later...

Добрый гдень.

Писать вопрос везгде задолбался, дам ссылки, ик понятней бугдет.

и

 

Дали ссылку на этот файл. Мне поможет? 

Другой мой сайт с икими же настройками и "проблемами" но на 1.5.6.4 не имеет никаких проблем, возможно в связи с кешированием в тот версии корзины.

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.