如何通过访问会话信息超时会话并在超时前执行操作?

时间:2014-04-27 09:34:35

标签: php phpmyadmin session-variables shopping-cart

我将购物车的商品存储到会话数组中,但由于产品ID和数量存储在客户端,因此当客户想要时,我无法检查商品数量添加可用数量已添加到其他客户购物车的商品。

所以我在added_to_cart表中添加了一个名为Products的列,当产品/项目添加到客户会话购物车时,该列会递增。

现在,我希望在客户没有活动一小时后暂停会话,并通过检查存储在非活动状态(待超时)中的内容来减少added_to_cart。 php会话

    Products
    -----------------------------------------
    : p_id  : available_qty : added_to_cart :
    -----------------------------------------
    : p-123 :  57           : 3             :
    -----------------------------------------
    : p-287 :  32           : 8             :
    -----------------------------------------

1.当客户从未访问过该网站时(即不调用session_start()),是否可以这样做。如果是这样的话。

2.这是正确的建议解决方案吗?他们如何在亚马逊和易趣等大型在线存储中做到这一点?

1 个答案:

答案 0 :(得分:1)

您应该在下订单/提交订单时进行最终数量检查,而不是在添加到购物车时。想想会发生什么,如果有人将您系统中的所有产品添加到购物车(只是为了好玩)..您的电子商务商店将售罄:)

所以应该像:

  • 查看项目可用数量(库存数量)时使用数据库中的值(实际,当前,可用数量)
  • 提交订单时,请检查订购数量是否可用。如果没有,请通知用户。如果是,请进行缩小并保存到DB。

还有很多很好的女仆,免费的电子商务软件,如:Magento(http://magento.com/

定时会话:

但如果你真的想做会话,你可以:

  • 使用时间戳
  • 将会话保存到数据库
  • 按用户更新每个页面请求的时间戳(如“上次访问”)
  • 定期删除旧会话行和“免费”保留产品

请记住,会话(相关的预留产品)应该很短(例如30分钟?)。