LEOnidUKG Опубликовано: 9 августа 2021 Поделиться Опубликовано: 9 августа 2021 (изменено) /system/library/seopro.php public function __destruct() { if(!$this->config->get('config_seo_pro')) return; if ($this->config->get('config_seo_url_cache')){ $this->cache->set('seopro.keywords', $this->keywords); $this->cache->set('seopro.queries', $this->queries); $this->cache->set('seopro.cat_tree', $this->cat_tree); $this->cache->set('seopro.product_categories', $this->product_categories); } } Я не знаю какую цель преследовал автор, может быть он что-то забыл? Возможно надо вот так хотя бы: public function __destruct() { if(!$this->config->get('config_seo_pro')) return; if ($this->config->get('config_seo_url_cache') && !$this->cache->get('seopro.keywords')){ $this->cache->set('seopro.keywords', $this->keywords); $this->cache->set('seopro.queries', $this->queries); $this->cache->set('seopro.cat_tree', $this->cat_tree); $this->cache->set('seopro.product_categories', $this->product_categories); } } Изменено 9 августа 2021 пользователем LEOnidUKG Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
LEOnidUKG Опубликовано: 9 августа 2021 Поделиться Опубликовано: 9 августа 2021 Ещё баг: /catalog/model/blog/article.php $article_data = $this->cache->get('article.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache); $article_data = []; if (!$article_data) { Кэш сбрасывается в любом случаи. Надо написать так: $article_data = $this->cache->get('article.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache); if (!$article_data) { $article_data = []; 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
zhu4koff Опубликовано: 10 августа 2021 Поделиться Опубликовано: 10 августа 2021 @LEOnidUKG думаю лучше будет на https://github.com/ocStore/ocStore Pull requests добавить, возможно быстрее исправят Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
buslikdrev Опубликовано: 10 августа 2021 Поделиться Опубликовано: 10 августа 2021 У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 10 августа 2021 Поделиться Опубликовано: 10 августа 2021 14 минут назад, buslikdrev сказал: У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Нет сессии, будет создана новая. И естественно будет сохранена. Вот тут есть у движка непродуманный момент, что сесиию вообще не стоит сохранять, если там все значения по умолчанию. У OC это валюта и язык по умолчанию. Они будут выставлены из конфига при новом обращении. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 10 августа 2021 Поделиться Опубликовано: 10 августа 2021 7 часов назад, buslikdrev сказал: У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. 3 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Basbia Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 (изменено) Я так понял ocstore сыровата ещё, надо ещё допиливать?? Изменено 11 августа 2021 пользователем Basbia Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Webjokerst Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? {{ h3 }} ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... buslikdrev Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 15 часов назад, mpn2005 сказал: Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Спойлер $cookie_status_path = DIR_SESSION . $this->config->get('session_prefix') . md5($this->request->server['REMOTE_ADDR']); if (!isset($this->request->cookie['cookie_status'])) { setcookie('cookie_status', true, 0); if (!is_file($cookie_status_path)) { file_put_contents($cookie_status_path, false); } else { $this->cookie_status = false; return false; } } else { if (is_file($cookie_status_path)) { @unlink($cookie_status_path); } } Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... SergeTkach Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 2 часа назад, Webjokerst сказал: В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? Это где? Можете показать снимок, а то у меня такого нету. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Webjokerst Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Alexuz Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ramen Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 (изменено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Изменено 17 августа 2021 пользователем ramen Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Shureg Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencart-forum.ru/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Изменено 18 августа 2021 пользователем AlektroNik Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Изменено 18 августа 2021 пользователем zhu4koff 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 5 6 7 8 9 10 Вперёд Страница 5 из 19 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 39 Перейти к списку тем Похожие публикации ocStore 3.0.3.7 - Модифицированный OpenCart Автор: dinox, 7 июля 2021 0 комментариев 219 343 просмотра dinox 8 июля 2021 Не работает ЧПУ Версия ocStore 3.0.3.7 Автор: Nikolay_23, 26 ноября 2022 5 ответов 297 просмотров nikoshot 26 ноября 2022 Мульти магазин OcStore 3.0.3.7 Автор: andrewignatov94, 1 ноября 2022 0 ответов 187 просмотров andrewignatov94 1 ноября 2022 URL пагинации ocStore 3.0.3.7 Автор: drVadz, 2 июня 2022 10 ответов 893 просмотра kulinenko 18 октября 2022 Рекомендуемые товары ocStore 3.0.3.7 Автор: AndruhaOD, 12 октября 2022 2 ответа 316 просмотров AndruhaOD 13 октября 2022 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Основной Новости и анонсы ocStore 3.0.3.7 - Модифицированный OpenCart Покупателям Оплата дополнений физическими лицами Оплата дополнений юридическими лицами Политика возвратов Разработчикам Регламент размещения дополнений Регламент продаж и поддержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каталога дополнений Урегулирование споров по авторским правам Полезная информация Публичная оферта Политика возвратов Политика конфиденциальности Платежная политика Политика Передачи Персональных Данных Политика прозрачности Последние дополнения ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777 Слайдер Производителей Автор: klimmm Информация (подсказка) Опций и Атрибутов Автор: Parallax Файл Менеджер Изображений Автор: Parallax × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение Хостинг для OpenCart × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
mpn2005 Опубликовано: 10 августа 2021 Поделиться Опубликовано: 10 августа 2021 14 минут назад, buslikdrev сказал: У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Нет сессии, будет создана новая. И естественно будет сохранена. Вот тут есть у движка непродуманный момент, что сесиию вообще не стоит сохранять, если там все значения по умолчанию. У OC это валюта и язык по умолчанию. Они будут выставлены из конфига при новом обращении. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 10 августа 2021 Поделиться Опубликовано: 10 августа 2021 7 часов назад, buslikdrev сказал: У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. 3 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Basbia Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 (изменено) Я так понял ocstore сыровата ещё, надо ещё допиливать?? Изменено 11 августа 2021 пользователем Basbia Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Webjokerst Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? {{ h3 }} ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... buslikdrev Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 15 часов назад, mpn2005 сказал: Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Спойлер $cookie_status_path = DIR_SESSION . $this->config->get('session_prefix') . md5($this->request->server['REMOTE_ADDR']); if (!isset($this->request->cookie['cookie_status'])) { setcookie('cookie_status', true, 0); if (!is_file($cookie_status_path)) { file_put_contents($cookie_status_path, false); } else { $this->cookie_status = false; return false; } } else { if (is_file($cookie_status_path)) { @unlink($cookie_status_path); } } Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... SergeTkach Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 2 часа назад, Webjokerst сказал: В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? Это где? Можете показать снимок, а то у меня такого нету. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Webjokerst Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Alexuz Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ramen Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 (изменено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Изменено 17 августа 2021 пользователем ramen Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Shureg Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencart-forum.ru/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Изменено 18 августа 2021 пользователем AlektroNik Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Изменено 18 августа 2021 пользователем zhu4koff 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 5 6 7 8 9 10 Вперёд Страница 5 из 19 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 39 Перейти к списку тем Похожие публикации ocStore 3.0.3.7 - Модифицированный OpenCart Автор: dinox, 7 июля 2021 0 комментариев 219 343 просмотра dinox 8 июля 2021 Не работает ЧПУ Версия ocStore 3.0.3.7 Автор: Nikolay_23, 26 ноября 2022 5 ответов 297 просмотров nikoshot 26 ноября 2022 Мульти магазин OcStore 3.0.3.7 Автор: andrewignatov94, 1 ноября 2022 0 ответов 187 просмотров andrewignatov94 1 ноября 2022 URL пагинации ocStore 3.0.3.7 Автор: drVadz, 2 июня 2022 10 ответов 893 просмотра kulinenko 18 октября 2022 Рекомендуемые товары ocStore 3.0.3.7 Автор: AndruhaOD, 12 октября 2022 2 ответа 316 просмотров AndruhaOD 13 октября 2022 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Основной Новости и анонсы ocStore 3.0.3.7 - Модифицированный OpenCart Покупателям Оплата дополнений физическими лицами Оплата дополнений юридическими лицами Политика возвратов Разработчикам Регламент размещения дополнений Регламент продаж и поддержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каталога дополнений Урегулирование споров по авторским правам Полезная информация Публичная оферта Политика возвратов Политика конфиденциальности Платежная политика Политика Передачи Персональных Данных Политика прозрачности Последние дополнения ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777 Слайдер Производителей Автор: klimmm Информация (подсказка) Опций и Атрибутов Автор: Parallax Файл Менеджер Изображений Автор: Parallax × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение Хостинг для OpenCart × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
mpn2005 Опубликовано: 10 августа 2021 Поделиться Опубликовано: 10 августа 2021 7 часов назад, buslikdrev сказал: У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки? Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. 3 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Basbia Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 (изменено) Я так понял ocstore сыровата ещё, надо ещё допиливать?? Изменено 11 августа 2021 пользователем Basbia Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Webjokerst Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? {{ h3 }} ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... buslikdrev Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 15 часов назад, mpn2005 сказал: Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Спойлер $cookie_status_path = DIR_SESSION . $this->config->get('session_prefix') . md5($this->request->server['REMOTE_ADDR']); if (!isset($this->request->cookie['cookie_status'])) { setcookie('cookie_status', true, 0); if (!is_file($cookie_status_path)) { file_put_contents($cookie_status_path, false); } else { $this->cookie_status = false; return false; } } else { if (is_file($cookie_status_path)) { @unlink($cookie_status_path); } } Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... SergeTkach Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 2 часа назад, Webjokerst сказал: В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? Это где? Можете показать снимок, а то у меня такого нету. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Webjokerst Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Alexuz Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ramen Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 (изменено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Изменено 17 августа 2021 пользователем ramen Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Shureg Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencart-forum.ru/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Изменено 18 августа 2021 пользователем AlektroNik Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Изменено 18 августа 2021 пользователем zhu4koff 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 5 6 7 8 9 10 Вперёд Страница 5 из 19 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 39 Перейти к списку тем Похожие публикации ocStore 3.0.3.7 - Модифицированный OpenCart Автор: dinox, 7 июля 2021 0 комментариев 219 343 просмотра dinox 8 июля 2021 Не работает ЧПУ Версия ocStore 3.0.3.7 Автор: Nikolay_23, 26 ноября 2022 5 ответов 297 просмотров nikoshot 26 ноября 2022 Мульти магазин OcStore 3.0.3.7 Автор: andrewignatov94, 1 ноября 2022 0 ответов 187 просмотров andrewignatov94 1 ноября 2022 URL пагинации ocStore 3.0.3.7 Автор: drVadz, 2 июня 2022 10 ответов 893 просмотра kulinenko 18 октября 2022 Рекомендуемые товары ocStore 3.0.3.7 Автор: AndruhaOD, 12 октября 2022 2 ответа 316 просмотров AndruhaOD 13 октября 2022 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Основной Новости и анонсы ocStore 3.0.3.7 - Модифицированный OpenCart Покупателям Оплата дополнений физическими лицами Оплата дополнений юридическими лицами Политика возвратов Разработчикам Регламент размещения дополнений Регламент продаж и поддержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каталога дополнений Урегулирование споров по авторским правам Полезная информация Публичная оферта Политика возвратов Политика конфиденциальности Платежная политика Политика Передачи Персональных Данных Политика прозрачности Последние дополнения ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777 Слайдер Производителей Автор: klimmm Информация (подсказка) Опций и Атрибутов Автор: Parallax Файл Менеджер Изображений Автор: Parallax × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение Хостинг для OpenCart × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
Basbia Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 (изменено) Я так понял ocstore сыровата ещё, надо ещё допиливать?? Изменено 11 августа 2021 пользователем Basbia Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
Webjokerst Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? {{ h3 }} ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
buslikdrev Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 15 часов назад, mpn2005 сказал: Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Спойлер $cookie_status_path = DIR_SESSION . $this->config->get('session_prefix') . md5($this->request->server['REMOTE_ADDR']); if (!isset($this->request->cookie['cookie_status'])) { setcookie('cookie_status', true, 0); if (!is_file($cookie_status_path)) { file_put_contents($cookie_status_path, false); } else { $this->cookie_status = false; return false; } } else { if (is_file($cookie_status_path)) { @unlink($cookie_status_path); } } Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... SergeTkach Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 2 часа назад, Webjokerst сказал: В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? Это где? Можете показать снимок, а то у меня такого нету. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Webjokerst Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Alexuz Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ramen Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 (изменено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Изменено 17 августа 2021 пользователем ramen Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Shureg Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencart-forum.ru/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Изменено 18 августа 2021 пользователем AlektroNik Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Изменено 18 августа 2021 пользователем zhu4koff 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 5 6 7 8 9 10 Вперёд Страница 5 из 19 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 39 Перейти к списку тем Похожие публикации ocStore 3.0.3.7 - Модифицированный OpenCart Автор: dinox, 7 июля 2021 0 комментариев 219 343 просмотра dinox 8 июля 2021 Не работает ЧПУ Версия ocStore 3.0.3.7 Автор: Nikolay_23, 26 ноября 2022 5 ответов 297 просмотров nikoshot 26 ноября 2022 Мульти магазин OcStore 3.0.3.7 Автор: andrewignatov94, 1 ноября 2022 0 ответов 187 просмотров andrewignatov94 1 ноября 2022 URL пагинации ocStore 3.0.3.7 Автор: drVadz, 2 июня 2022 10 ответов 893 просмотра kulinenko 18 октября 2022 Рекомендуемые товары ocStore 3.0.3.7 Автор: AndruhaOD, 12 октября 2022 2 ответа 316 просмотров AndruhaOD 13 октября 2022 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Основной Новости и анонсы ocStore 3.0.3.7 - Модифицированный OpenCart Покупателям Оплата дополнений физическими лицами Оплата дополнений юридическими лицами Политика возвратов Разработчикам Регламент размещения дополнений Регламент продаж и поддержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каталога дополнений Урегулирование споров по авторским правам Полезная информация Публичная оферта Политика возвратов Политика конфиденциальности Платежная политика Политика Передачи Персональных Данных Политика прозрачности Последние дополнения ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777 Слайдер Производителей Автор: klimmm Информация (подсказка) Опций и Атрибутов Автор: Parallax Файл Менеджер Изображений Автор: Parallax × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение Хостинг для OpenCart × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
SergeTkach Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 2 часа назад, Webjokerst сказал: В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в странице товара? Это где? Можете показать снимок, а то у меня такого нету. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Webjokerst Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Alexuz Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ramen Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 (изменено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Изменено 17 августа 2021 пользователем ramen Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Shureg Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencart-forum.ru/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Изменено 18 августа 2021 пользователем AlektroNik Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Изменено 18 августа 2021 пользователем zhu4koff 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 5 6 7 8 9 10 Вперёд Страница 5 из 19 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 39 Перейти к списку тем Похожие публикации ocStore 3.0.3.7 - Модифицированный OpenCart Автор: dinox, 7 июля 2021 0 комментариев 219 343 просмотра dinox 8 июля 2021 Не работает ЧПУ Версия ocStore 3.0.3.7 Автор: Nikolay_23, 26 ноября 2022 5 ответов 297 просмотров nikoshot 26 ноября 2022 Мульти магазин OcStore 3.0.3.7 Автор: andrewignatov94, 1 ноября 2022 0 ответов 187 просмотров andrewignatov94 1 ноября 2022 URL пагинации ocStore 3.0.3.7 Автор: drVadz, 2 июня 2022 10 ответов 893 просмотра kulinenko 18 октября 2022 Рекомендуемые товары ocStore 3.0.3.7 Автор: AndruhaOD, 12 октября 2022 2 ответа 316 просмотров AndruhaOD 13 октября 2022 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Основной Новости и анонсы ocStore 3.0.3.7 - Модифицированный OpenCart Покупателям Оплата дополнений физическими лицами Оплата дополнений юридическими лицами Политика возвратов Разработчикам Регламент размещения дополнений Регламент продаж и поддержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каталога дополнений Урегулирование споров по авторским правам Полезная информация Публичная оферта Политика возвратов Политика конфиденциальности Платежная политика Политика Передачи Персональных Данных Политика прозрачности Последние дополнения ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777 Слайдер Производителей Автор: klimmm Информация (подсказка) Опций и Атрибутов Автор: Parallax Файл Менеджер Изображений Автор: Parallax
Webjokerst Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 3 часа назад, SergeTkach сказал: Это где? Можете показать снимок, а то у меня такого нету. Все уже разобрался... Оказалось, что это выводит модуль, а не сам двиг. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
mpn2005 Опубликовано: 11 августа 2021 Поделиться Опубликовано: 11 августа 2021 6 часов назад, buslikdrev сказал: Я думаю это браузеры должны были предусмотреть и отправлять на сайт в заголовке информацию, что куки отключены и поэтому не шлите мне их. Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следующей загрузки страницы. Это один момент. А второй - зачем сохранять сессию, если там от дефолтных значений ничего не поменялось. Если посмотреть в БД записи, то сессий о значениями по умолчанию будет под 90% Их нет смысла хранить и тратить на них ресурс. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Alexuz Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... ramen Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 (изменено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Изменено 17 августа 2021 пользователем ramen Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Shureg Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencart-forum.ru/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Изменено 18 августа 2021 пользователем AlektroNik Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Изменено 18 августа 2021 пользователем zhu4koff 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 5 6 7 8 9 10 Вперёд Страница 5 из 19 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 39 Перейти к списку тем Похожие публикации ocStore 3.0.3.7 - Модифицированный OpenCart Автор: dinox, 7 июля 2021 0 комментариев 219 343 просмотра dinox 8 июля 2021 Не работает ЧПУ Версия ocStore 3.0.3.7 Автор: Nikolay_23, 26 ноября 2022 5 ответов 297 просмотров nikoshot 26 ноября 2022 Мульти магазин OcStore 3.0.3.7 Автор: andrewignatov94, 1 ноября 2022 0 ответов 187 просмотров andrewignatov94 1 ноября 2022 URL пагинации ocStore 3.0.3.7 Автор: drVadz, 2 июня 2022 10 ответов 893 просмотра kulinenko 18 октября 2022 Рекомендуемые товары ocStore 3.0.3.7 Автор: AndruhaOD, 12 октября 2022 2 ответа 316 просмотров AndruhaOD 13 октября 2022 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Основной Новости и анонсы ocStore 3.0.3.7 - Модифицированный OpenCart
kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 В 08.08.2021 в 21:03, NineBot сказал: Решил обновиться поверх свежеУстановленной версию ocStore 3.0.2.0 (с хостинга) PHP 7.4 Во время обновления появляется ошибка: Upgrade Progress Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist Error No: 1146 SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41 И ещё в добавок PHP_errors.log Всё делал по инструкции, что не так? PHP_errors.log 22 \u043a\u0411 · 1 download Та же проблема. Как-то решили? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
AlektroNik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 11 минут назад, kamrik сказал: oc_url_alias' doesn't exist Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
kamrik Опубликовано: 12 августа 2021 Поделиться Опубликовано: 12 августа 2021 7 минут назад, AlektroNik сказал: Конкретно в этом случае просто создать таблицу oc_url_alias. Структуру запроса таблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии. Второй вариант под этуже структуру подогнать существующую таблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура. А вообще, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск. Лучше ставить с нуля. Значит пока остаемся на 3.0.3.2 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
Alexuz Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Цитата in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
zhu4koff Опубликовано: 16 августа 2021 Поделиться Опубликовано: 16 августа 2021 2 часа назад, Alexuz сказал: После чистой установки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
ramen Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 (изменено) В 12.08.2021 в 08:04, AlektroNik сказал: Лучше ставить с нуля. Ставлю с нуля и аналогичный error выдает. Спойлер Изменено 17 августа 2021 пользователем ramen Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
Shureg Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 3 минуты назад, ramen сказал: Ставлю с нуля и аналогичный error выдает. Поставить с нуля - это удалить, что уже поставили, в том числе БД, и установить на чистый хостинг. А вы снова делаете обновление по старому. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 В 10.08.2021 в 21:41, mpn2005 сказал: Вот таким вот кодом можно избавиться от записи ненужных сессиий. В файле system/library/session/db.php После строки: $this->db = $registry->get('db'); Добавить: $this->config = $registry->get('config'); И в функции write после строки: if ($session_id) { Добавить вот это: $session_empty = true; foreach ($data as $key => $value) { if ($key == 'language' && $value == $this->config->get('config_language')) { continue; } if ($key == 'currency' && $value == $this->config->get('config_currency')) { continue; } $session_empty = false; break; } if ($session_empty) { return true; } Таким образом, если в сессии будут данные, отличные от данных по умолчанию, то она будет записана в БД. Иначе запись не производится. Непонятно, почему вообще этому моменту не уделили изначально должного внимания. Тем более, что либа сессий OC3 изначально из коробки кривая. Мне кажется так сделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в таблице oc_cart и идет привязка к сессии из таблицы oc_session. Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. Вот код из файла /system/library/session/db.php: if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) { $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time())) . "'"); 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Вот код из файла /system/library/cart/cart.php: $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; и вот оттудаже: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)"); Вот пример, что в базе творится. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
AlektroNik Опубликовано: 17 августа 2021 Поделиться Опубликовано: 17 августа 2021 Еще вопрос по поводу тех же сессий. У меня время сессии 33,6 Вот по этой строчке из /system/library/session/db.php $this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440; Я давно хотел сделать типо вечную ссессию как допустим в vk.com или яндексе, но мой же ответ выше https://opencart-forum.ru/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162 натолкнул на мысль, если ее сделать бесконечной, то тогда БД будет расти слишком быстро.@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie? Пока наверное, мысли хотя бы увеличить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понедельник без необходимости обновлять страницу сайта для обновления expire сессии. Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 В 17.08.2021 в 13:16, AlektroNik сказал: Мне кажется не стоит убирать эти сессии по двум причинам: 1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа. С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного. В 17.08.2021 в 13:16, AlektroNik сказал: 2. Если не будет уникальных сессий как же тогда Opencart будет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию. Данные сессии никак не влияют на корзину. Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. 19 часов назад, AlektroNik сказал: Правда, пару лет назад я так и не смог решить проблему времени жизни cookie в Яндекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка поведения самого браузера, но у клиентов же такое не сделаешь.) Буду благодарен за совет и по этой проблеме. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Изменено 18 августа 2021 пользователем AlektroNik Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Изменено 18 августа 2021 пользователем zhu4koff 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 5 6 7 8 9 10 Вперёд Страница 5 из 19 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 39 Перейти к списку тем Похожие публикации ocStore 3.0.3.7 - Модифицированный OpenCart Автор: dinox, 7 июля 2021 0 комментариев 219 343 просмотра dinox 8 июля 2021 Не работает ЧПУ Версия ocStore 3.0.3.7 Автор: Nikolay_23, 26 ноября 2022 5 ответов 297 просмотров nikoshot 26 ноября 2022 Мульти магазин OcStore 3.0.3.7 Автор: andrewignatov94, 1 ноября 2022 0 ответов 187 просмотров andrewignatov94 1 ноября 2022 URL пагинации ocStore 3.0.3.7 Автор: drVadz, 2 июня 2022 10 ответов 893 просмотра kulinenko 18 октября 2022 Рекомендуемые товары ocStore 3.0.3.7 Автор: AndruhaOD, 12 октября 2022 2 ответа 316 просмотров AndruhaOD 13 октября 2022 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу.
mpn2005 Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 2 часа назад, mpn2005 сказал: Если там ноль, то браузер работает как надо. В оригинальном OC3 всё ещё не поправили проблему. Вот файл на git https://github.com/opencart/opencart/blob/3.0.x.x_Maintenance/upload/system/framework.php Смотрим вот сюда: Время жизни сесии должно быть меткой времени UNIX Вот документация: Итого, если мы выставим cookie_lifetime = 10000, для примера, то получим куку, которая протухла 52 года назад. 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... AlektroNik Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Изменено 18 августа 2021 пользователем AlektroNik Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... zhu4koff Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Изменено 18 августа 2021 пользователем zhu4koff 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 5 6 7 8 9 10 Вперёд Страница 5 из 19 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 39
AlektroNik Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 3 часа назад, mpn2005 сказал: Корзина привязана к ID сессии, а не к данным из сессии. ID сессии хранится в куках браузера. И время жизни определяется настройкой session.cookie_lifetime Если там ноль, то кука умирает с закрытием браузера. И по умолчанию там ноль. Если там не ноль, то в большинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не получится даже заглогинится в админку. В ocStore-3.0.3.7 это уже из коробки исправлено. В чистом OC3 это так и не поправили. Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии. Вы всё слепили в кучу и перемешали. Можно сесиию делать долгой. Но при этом лучше не сохранять пустые сессии. В первых версия OC3 сессии вообще никогда не чистились из за кривой либы. И на этих версиях можно часто встретить таблицу сессий овер 1Гб. Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии. Что в параметре session.cookie_lifetime? Если там ноль, то браузер работает как надо. Добрый вечер, большое спасибо за такой развернутый ответ 🤗🍻 Да, что-то не разобрался с курицей и яйцом 😅 Вы абсолютно правы. Провел эксперемент. Удалили из таблицы oc_session сессия и по кукам она в базе создалась обратно при обновлении страницы Тогда да, нужно внедрять исправление однозначно. Не зря ocStore 3.0.3.7 ждал пока зарелизят 😁, хотябы /system/framework.php поправили.Может кинете Pull Request в git OcStore? Можете посоветовать настройки? Как Вы обычно в своих проектах делаете? Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня, а авторизация залогиненых покупателей максимально долго, хотя бы год. Или как лучше? 1. Корзина гостей чистится вот этой строчкой. Тут выставляю 4 дня: код из файла /system/library/cart/cart.php: // Remove all the expired carts with no customer ID $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 96 HOUR)"); 2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров. # 1 год = 31 536 000 php_value session.cookie_lifetime 31536000 # 4 Дня равно 345600 секунд php_value session.gc_maxlifetime 345600 Изменено 18 августа 2021 пользователем AlektroNik Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
zhu4koff Опубликовано: 18 августа 2021 Поделиться Опубликовано: 18 августа 2021 (изменено) 34 минуты назад, AlektroNik сказал: Хотелось бы чтобы корзина сохранялась для гостей хотя бы 4 дня возможно будет интересно посмотреть модуль и потом пообщаться с его автором Изменено 18 августа 2021 пользователем zhu4koff 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
Рекомендованные сообщения