Відгуки користувачів
OcBox Cart Lifetime: кошик покупця живе 30 днів замість години, без помилки 1213 Deadlock і прибирання на кожному перегляді сторінки для OpenCart та ocStore
Це безкоштовний модуль формату Community Edition. Він лагодить дві болі, у яких насправді один корінь. Перша: у стоковому OpenCart кошик незалогіненого покупця живе рівно одну годину, і людина, що зайшла зранку й повернулась увечері, бачить порожній кошик. Друга: прибирання старих кошиків запускається у кожному перегляді будь-якої сторінки, і в години пік це робить взаємні блокування рядків бази (помилка 1213), через які додавання в кошик падає з порожньою сторінкою. Модуль розтягує життя кошика гостя до 30 днів зі зсувним вікном, прибирання робить рідко і порціями, а повернення покупця зливає старий кошик з поточним без дублів. Безкоштовно, без ionCube, без прив’язки до доменів.
Швидкі посилання: Дві болі з одного кореня · Що робить модуль · Покажчик у базі одним кліком · Чесна межа модуля · Сумісність
Дві болі з одного кореня, пояснюю простими словами
Біль перша, видима власнику магазину. У стоковому OpenCart кошик покупця, який ще не увійшов під своїм обліковим записом, живе рівно одну годину. Людина поклала товар, пішла порадитись із дружиною, повернулась увечері, а кошик порожній. Вона не починає спочатку, вона йде до конкурента. Для товарів, які обирають довго (кухня, меблі, велосипед, курс, страхування), це прямі втрачені гроші. У налаштуваннях OpenCart такої опції просто немає, тому більшість власників магазинів навіть не здогадується, що так влаштовано зсередини.
Біль друга, видима програмісту. Те саме прибирання старих кошиків ядро OpenCart запускає на кожному перегляді будь-якої сторінки каталогу. Запит побудований так, що база не може скористатись покажчиком і перебирає всю таблицю кошиків, тримаючи при цьому блокування на цілий діапазон рядків. На жвавому магазині паралельне додавання товару в кошик стає в чергу за цим прибиранням, і два запити заклинюють один одного. У лозі бази сиплеться помилка номер 1213 (Deadlock found when trying to get lock), а покупець у цю мить бачить порожню сторінку замість доданого товару. Загострюється в години пік, під час вивантаження з обліковки і коли по сайту ходять боти пошуковиків.
Корінь обох проблем один: ядро прибирає кошики не там, де треба, не з тією частотою, яка потрібна, і за запитом, що блокує таблицю. Виправити це означає прибирання відв’язати від кожного перегляду, зменшити вікно, яке воно чіпає за раз, і додати до таблиці кошиків нормальний покажчик за датою.
Що робить модуль, по пунктах
Нижче всі зміни, які модуль вносить у поведінку кошика. Кожну можна увімкнути чи вимкнути окремо, тому ви самі вирішуєте, наскільки сильно відходити від стокового OpenCart.
Життя кошика гостя розтягується до 30 днів зі зсувним вікном
✓ Кошик живе 30 днів, і цей строк починається заново з кожною дією покупця
Типово кошик неавторизованого покупця живе 30 днів (значення налаштовується від 1 до 365 днів). Строк зсувний: щоразу, коли покупець заходить і щось дивиться, кладе товар, змінює кількість, лічильник починається заново. Поки людина періодично повертається, кошик її чекає. Так само поводиться покинутий кошик для нагадувань: він лишається доступним для аналізу й відновлення, а не зникає через годину після виходу з сайту.
⚠ Без цього: кошик стирається через 60 хвилин, і покупець, який повернувся навіть по обіді, починає з нуля. Половина таких просто не починає.
Повернення покупця зливає старий кошик з поточним, без дублів
✓ Старий і новий кошики складаються в один, однакові позиції додаються кількістю
Коли покупець повертається на сайт (нова сесія, новий сеанс браузера), модуль знаходить його попередній кошик за підписаним кукі-маркером і зливає з поточним у один. Однакові позиції з однаковими опціями складаються кількістю, а не стають двома рядками. Різні позиції лягають одна поряд з одною. Так само поводиться вхід під обліковим записом: гостьовий кошик додається до клієнтського, замість того щоб один з них зникнути.
⚠ Без цього: у клієнта або два товари «телефон» замість чотирьох, або гостьовий кошик зникає разом з увійшлим клієнтом, і купівля починається з нуля.
Прибирання запускається рідко і за раз чіпає обмежену порцію
✓ Один прохід прибирання на тисячу переглядів, і він торкається лише кількох сотень рядків за раз
Замість того щоб гнати великий DELETE у кожному перегляді, модуль запускає прибирання приблизно раз на тисячу переглядів (частота налаштовується). За один прохід чіпає обмежену порцію рядків (типово 500, налаштовується), використовує покажчик за датою і тримає блокування на мілісекунди замість секунд. Паралельні додавання в кошик більше не стають у чергу і не отримують 1213 Deadlock.
⚠ Без цього: у години пік журнал бази рясніє помилкою 1213, покупець тисне «Купити» і бачить порожню сторінку, а власник магазину не розуміє, чому в аналітиці стрибнув відсоток покинутих кошиків.
Один клік створює рекомендований покажчик у базі
✓ Кнопка «Створити покажчик» прямо на сторінці налаштувань, без лазіння в редактор бази
Швидке прибирання за датою потребує покажчика на колонці date_added таблиці кошиків. У стоковій схемі OpenCart такого покажчика немає, і додати його руками через редактор бази більшість власників магазинів не стане. Модуль показує стан таблиці на панелі статусу, і якщо покажчика бракує, пропонує створити його однією кнопкою. Безпечно для живого магазину: створення покажчика на таблиці кошиків це операція на кілька секунд навіть при сотнях тисяч рядків.
⚠ Без цього: нормальна частота прибирання помітно повільніша, бо база перебирає всю таблицю замість того, щоб одразу знайти найстаріші рядки. На великій таблиці різниця десятикратна.
Панель стану: все, що відбувається з таблицею кошиків, видно одразу
✓ Стан таблиці, покажчик, кількість рядків, вік найстарішого запису: на одній сторінці
На сторінці налаштувань показується: чи створений рекомендований покажчик у базі, скільки зараз рядків у таблиці кошиків, вік найстарішого з них, коли востаннє спрацювало прибирання, скільки рядків воно забрало. Так одразу видно, що модуль дійсно працює і скільки роботи взяв на себе. Якщо щось не так (наприклад, прибирання жодного разу не запускалось після встановлення), це помітно, а не ховається всередині бази.
⚠ Без цього: власник магазину не має способу перевірити, скільки гостьових кошиків зараз лежить у базі і коли її востаннє прибирали, крім запиту до редактора бази.
Налаштування: тривалість, частота прибирання, розмір порції
✓ Кілька полів у звичній адмінці OpenCart, без правок у коді і базі
На сторінці налаштувань: перемикач увімкнути чи вимкнути модуль, число днів життя кошика (типово 30), частота прибирання (приблизно раз на тисячу переглядів), розмір порції за один прохід (типово 500 рядків). Усе робиться галочками й числами, без правок у файлі cart.php ядра і без запитів у базу вручну. Для магазину, у якого свої умови (наприклад, довгий цикл купівлі), всі значення можна підняти чи опустити, і модуль продовжить працювати.
⚠ Без цього: будь-яка зміна поведінки кошика означає ручну правку файлу ядра, яку наступне оновлення OpenCart перетре.
Чесна межа модуля: що він робить, а чого не обіцяє
Пишемо прямо, бо нам не потрібні люди, які прийдуть зі словами «ви обіцяли, що помилок не буде». Модуль робить взаємні блокування рядків бази (1213 Deadlock) рідкісними, а не повністю неможливими. Він прибирає три головні причини: прибирання у кожному перегляді, широкий діапазон блокування і відсутність покажчика. Але повністю виключити 1213 Deadlock можна лише зміною рівня ізоляції транзакцій на сервері бази (READ-COMMITTED замість стокового REPEATABLE-READ), а це вже рівень my.cnf і домовленість з хостингом, а не модуля. Для переважної більшості магазинів цього й не треба: після встановлення модуля помилка 1213 переходить з «кілька разів на день» у «кілька разів на місяць», часто взагалі зникає з поля зору.
Що це означає простими словами
Раніше, щоб у OpenCart кошик жив довше години і не вбивав базу своїм прибиранням, треба було лізти у файл ядра system/library/cart/cart.php, правити запити руками, окремо робити кукі з підписом, окремо йти в редактор бази і додавати покажчик, і сподіватись, що наступне оновлення OpenCart це не перетре. OcBox Cart Lifetime збирає все це в один модуль, який ставиться через OCMOD, має сторінку налаштувань в адмінці і покажчик створює своєю кнопкою.
Для кого цей модуль
Для будь-якого магазину на OpenCart 3.x чи ocStore 3.x, у якого хоч раз було одне з трьох: клієнт пожалівся, що «кошик зникає», аналітика показує неприродно високий відсоток покинутих кошиків на короткій дистанції, у журналі бази трапляється помилка 1213 Deadlock. Особливо корисний для магазинів з довгим циклом обирання (меблі, кухні, велосипеди, курси, страхування, автозапчастини під підбір), де покупець звичайно повертається не того ж дня.
Сумісність
Модуль працює на OpenCart 3.0.x та ocStore 3.x, PHP від 7.0 до 8.3, MySQL 5.7+ і MariaDB 10+. Встановлюється через OCMOD у system/library/cart/cart.php, тому сумісний з більшістю шаблонів і сторонніх модулів кошика (Prime, UpStore, CyberStore, Chameleon, LuxShop, NewStore та інші). Без ionCube, без прив’язки до доменів, без зовнішніх залежностей. Складання з іншими модулями, що правлять cart.php, перевіряється на сторінці оновлення модифікацій.
Безкоштовно і буде таким назавжди.
Це наш внесок у якість українського OpenCart-ринку. Ми не плануємо робити з Cart Lifetime платну версію, не плануємо робити «розширений Pro» з додатковими опціями за гроші, не плануємо прив’язувати до покупки іншого платного модуля. Ставте, користуйтесь, діліться враженнями у темі підтримки.
Регламент видачі файлів модуля
Модуль безкоштовний і видається одразу після завантаження з цієї сторінки. Жодних ключів, активації чи реєстрації не потрібно: розпаковуєте архів, заливаєте upload/ у корінь магазину, оновлюєте модифікації в адмінці (Розширення → Модифікатори → Оновити), заходите у Налаштування модуля і натискаєте «Створити покажчик у базі». Усе.
Знайшли помилку в роботі модуля?
Напишіть у тему підтримки або в особисті повідомлення: посилання на сторінку, що ви робили, що сталося, і текст помилки. Як за пʼять хвилин увімкнути показ помилок, знайти журнал і побачити помилки в консолі браузера, покроково зі скріншотами: Помилки на сайті OpenCart: як їх увімкнути, знайти і передати розробнику. З таким звітом ми виправляємо проблему значно швидше.
Рекомендовані платні модулі OcBox
|
Smart Related $30, пов’язані товари |
SEO FAQ AI $30, AI FAQ + Schema.org |
AI Product Editor $50, масове редагування |
|
Image Pro $15, WebP, водяний знак |
Filter $30, розумний фільтр + SEO |
Category Manager $15, візуальний менеджер категорій |
|
AI Smart Search $200, AI-пошук з синонімами |
AI Chat $100, AI-консультант 24/7 |
AI Photo Studio $50, AI-обробка фото |
|
PaymentHub $80, хаб оплат |
ShippingHub $80, хаб доставок |
SmartOrder $30, швидке замовлення |
|
ShippingRules $30, правила доставки |
AI Megareports $20, звіти й Telegram-дайджест |
Product Bundles $30, комплекти і набори |
|
Simple Super Search $15, нечіткий пошук без Sphinx |
Підписуйтесь на наш канал: t.me/ocboxchannel
Характеристики
-
1
-
Зараз на сторінці 0 користувачів
- Ні користувачів, які переглядиють цю сторінку