一个网上购物系统,购物车中一般如何处理以下冲突情况:
情况一:
    A顾客在购物车内添加了商品 P ,然后继续购物...
    结果在A结帐时商品P已经为空,原因是此商品已经被B顾客购买,程序产生异常(A觉得系统不合理)
情况二:
    假如在添加到购物车后立即更新数据库:
    A顾客在购物车内添加了N多商品 P ,然后继续购物...结果session失效时A仍未结帐(可能A恶意占用此资源),直接导致所有顾客无法购买商品P...
请问一般应该如何设计此程序或数据库操作更为合理...

解决方案 »

  1.   

    那就在session失效后清空顾客A的购物车,数据写回数据库
      

  2.   

    可能A长期停留,因为session时间不可能太短,或者A定期刷新了页面session时间又会继续延长...
    而在A恶意占用此商品资源停留期间,所有顾客将为此等待!~对于一个大型购物系统而言,此Bug被人恶意利用,有可能对商家造成直接经济损失
    ============================================
    zx2002027(希望之星) 
    那就在session失效后清空顾客A的购物车,数据写回数据库
      

  3.   

    dewdrop(白露) 
    谢谢!!~
    设置定时器是一个不错的建议,但希望有更简单的办法来解决情况二的问题..
    之前设计的时候想得太简单,没有给添加进购物车的商品进行保留,所以产生了情况一的BUG..
      

  4.   

    让此商品(P)单线程处理.
    当此商品(P)一旦已经被一位顾客(A)选中,那么别的用户(B)就不能再找到此商品(P)了.直到用户A的线程已经失效.