Снова про организанцию корзины в интернет магазине. Нужна критика

Европа - быстрые серверы на дисках NVMe от $5 / Русский датацентр от 199руб

Тема в разделе "Вопросы по программированию на РНР", создана пользователем Danon_13, 5 фев 2019.

  1. Danon_13

    Danon_13 Новичок

    Сообщения:
    23
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Приветствую
    поиском уже воспользовался и прочитал темы но ответа так и не нашел

    вопрос к более опытным программистам
    хочу реализовать корзину с запоминанием того, что добавил НЕЗАРЕГИСТРИРОВАННЫЙ пользователь в корзину

    вижу 2 пути реализации


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

    2. реализация через БД и куки - создать уникальный ID все товары положенные в корзину добавлять в БД ну а этот ID добавить в куки браузера ну и дублировать корзину в сессию
    как только сессия закончится а пользователь заново зайдет на сайт то из кук поднять ID и по ID выцепить его старые покупки


    2й вариант "сложнее" чем первый но он теоретически захломит бд кучей заказов которые по идее так и останутся в корзине и не будут заказаны
    это же касается и кнопки избранное
    хотя например раз в неделю можно запускать скрипт который для не зарегистрированных пользователей удалит и положенные в корзину товары и избранное


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

    c0dex web.dev 2002-... Команда форума Партнер клуба

    Сообщения:
    7.766
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    @Danon_13, Вариант нормальный только один - делается через куку и таблицу в базе данных, таблицу чистим раз в N часов/дней/лет короном. Все остальное с дублированием данных в сессию - забудь.
     
  3. ksnk

    ksnk прохожий

    Сообщения:
    1.101
    Address:
    Sankt-Peterburg, Russia
    Country:
    Location on Map:
    "автоматическая" регистрация любого посетителя сайта, который положил товар в корзину.
    В долговременную (год?) куку укладывается следующий id покупателя, к значению куки привязывается корзина в базе данных. Тут могут быть варианты - товары можно хранить в localstore покупателя, хотя эффективнее и для статистики удобнее - в базе данных. Зависит, естественно, от размера магазина и политики магазина - ориентирован ли он на постоянных покупателей, или основной доход приносят разовые покупатели.
    Покупатель может в любой момент авторизоваться, тогда временная корзина сливается с корзиной покупателя. Информация о пользователе позволяет заполнить информацию о доставке или просмотреть свою историю заказов.
    Чтобы база не забивалась фейковыми корзинами - неавторизованные корзины без заказа можно чистить раз в месяц-полмесяца-неделю.
    Саму регистрацию можно совместить с оформлением заказа - email или телефон пользователя вполне пойдут как идентификатор пользователя.
     
  4. WMix

    WMix герр M:)ller Партнер клуба

    Сообщения:
    6.368
    Ваш город:
    Berlin
    Address:
    Berlin, Germany
    Country:
    Location on Map:
    Допустим у тебя не амазон но 1000 корзин на день, 365.000 в год, лимон в три, 10 лимонов в 30 лет. В чем проблема? Тем более понимаешь что можно чистить. (Будет 1000 корзин в день, будет круто)
     
  5. Danon_13

    Danon_13 Новичок

    Сообщения:
    23
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    спасибо за ответы
     
  6. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    7.125
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
    еще можно хранить в IndexedDB - хранилище в браузере