За последние 24 часа нас посетили 15804 программиста и 1666 роботов. Сейчас ищут 858 программистов ...

скрипт корзины

Тема в разделе "PHP для новичков", создана пользователем acb, 5 апр 2011.

  1. acb

    acb Активный пользователь

    С нами с:
    29 мар 2011
    Сообщения:
    5
    Симпатии:
    0
    Хочу реализовать, что бы покупатель, отложив товар в свою корзину бронировал его , что бы остальные
    покупатели не могли его купить. В нормальной ситуации, когда он оформит покупку или очистит корзину
    понятно как делать. Но пользователь может набрать товара себе корзину и выйти с сайта. Как сделать что
    бы товар попал снова в продажу, скажем через 24 часа.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ой, предчувствую гемор с кучей запросов в бд...
     
  3. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Варианта два.
    1) Регулярно запускать чистящий скрипт, который будет проверять есть ли у какого юзера товары в корзине и корзина не обновлялась 24 часа. Если есть, то удаляет эту корзину.
    2) Каждый раз как любой пользователь смотрит товар (или количество доступного товара) и это количество равно (или близко к) нулю, то автоматом проверять, не завалялось ли у кого "закорзиненого" товара возрастом более 24 часа. Если завалялос - см. пункт 1.
     
  4. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Геморрой точно будет, уверен, что бронирование нужно? Я бы предложил сделать по принципу "кто первый встал - того и тапки".
     
  5. NR55RU

    NR55RU Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    88
    Симпатии:
    0
    Johnatan сказал интересную мысль но я бы ее дополнил чисто идеологическим моментом:
    В базе данных в строке с инфой о товаре хранить как фактическое количество так и количество данного товара в резерве. При добавлении товара в поле "В резерве" не менять количество в поле "Фактически" ибо он есть фактически а то что в резерве мифически.
    Это позволит осуществлять быстрый расчет "свободного" товара а не сканить какую то таблицу на предмет а сколько там и у кого товара завалявшегося.
    Это позволит так же легко выводить инфу о том сколько товара реально есть и сколько в резерве, что не будет тебя самого сбивать с толку почему у тебя утром было 10 единиц товара ничего не продали а уже стоит всего 5 .. :)
    Просто будешь это поле забирать вместе с инфой о товаре сразу и все, расчет скриптом и никаких левых запросов в базу без необходимости.

    Ну и как следствие легко позволит реализовать пункт 2 от Johnatan :)

    В итоге можно сделать симбиоз.
    1. Крон раз в сутки или чаще в зависимости от оборотов магазина.
    2. Как только количество резерва приближается к количеству товара.

    В сумме два пункта дадут в худшем случае задержку со сбросом левого резерва в 24 часа для "тихих" товаров и по мере ухода в резерв "ходовых" товаров в течении 24 часов.
     
  6. NR55RU

    NR55RU Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    88
    Симпатии:
    0
    А бронирование если применить примерно то что я описал выше делается проще простого.
    Если фактическое количество товара равно товару в резерве то ничего забронировать нельзя или купить тоже нельзя.

    Если фактически 5 а в резерве 4 значит есть 1 свободная единица для продажи, если пользователь положил ее в корзину то помимо всех прочих операций по запоминанию данного момента кто че и кого в поле "в резерве" для данного товара делается +1 и в резерве становиться 5 и равняется полю фактически .. получается что товар пока ВЕСЬ в резерве и купить/зарезервировать больше его нельзя покуда резерв не освободиться или же нового не завезут.

    Все вроде просто и без гемора :)
     
  7. NR55RU

    NR55RU Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    88
    Симпатии:
    0
    Да и по пункту 2.
    Надо обязательно хранить последнее время когда скрипт делал очистку резервов, что бы если за 5 минут на страницу с товаром близким к нулю зайдет 100 человек скрипт не гонял 100 раз базу.
    Таким образом можно контролировать минимальный интервал между запуском скрипта отчисти резервов.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нр55 дело говорит