【问题标题】:How can you automatically update database values using php?如何使用 php 自动更新数据库值?
【发布时间】:2012-06-07 15:45:19
【问题描述】:

当从购物篮中添加或删除商品时,我网站上的商店会调整商品数量。但是,如果有人来到该站点并将一件商品中的 10 件添加到购物篮中并且没有删除这 10 件商品就离开了,那么他们将永远不会返回到数据库中。

如果有人在将商品从购物篮中取出之前离开网站,我该如何补充商品数量?也许是一个cron?

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    用户将物品放入购物篮后是否需要立即“保留”?

    是的

    当用户预订项目时,将其预订时间存储在表格中。在计算产品的可用项目数时,减去当前保留的项目数。

    当/如果用户为该项目付款时,将该项目从保留表中移除并将其标记为已购买。

    然后使用 cron 删除在时间 x 之后仍保留在保留表中的所有项目。

    这样做的缺点是用户购物篮将在时间x 之后清空,因此您必须告知用户他们还有多少时间可以支付他们的物品。

    这更适合需求量大的商品,这些商品可能在付款前就缺货。例如,活动门票。

    没有

    不要在用户将商品放入购物篮时将其标记为已保留,并在用户付款时再次检查库存。如果产品在他们将商品放入购物篮后已经缺货,则显示错误。

    这更容易,更适合低需求的产品。

    【讨论】:

    • 这很有帮助。谢谢!
    【解决方案2】:

    编写一个脚本来清理陈旧的备份(例如,最后一次访问是在 2 小时前)并在 cron 中调用它。

    【讨论】:

      【解决方案3】:

      您可以创建一个 cron 作业,该作业会在商品放入购物车后每隔 X 小时自动从客户购物车中删除元素,但这可能会从购物车中删除仍在被活跃用户使用的商品,因此这可能会被忽视.

      一种做你想做的事的方法也是使用 JavaScript 来捕捉用户关闭网站/去 afk X 小时。一旦任何一个元素被触发,您就可以进行 AJAX 调用以从购物车中删除商品并相应地更新网站。这似乎是解决您的问题“当他们离开网站时”最直接的解决方案,但如果 cookie 被客户端本身破坏,则不会真正解决问题。

      无论哪种方式,您都需要考虑一种方法来确保客户端、会话和数据库上的数据同步,以确保没有物品是“孤立的”,并且不会对不存在的物品进行购买。

      【讨论】:

        【解决方案4】:

        首先,很难确定用户何时离开网站并且不会返回。有很多方法,但并非所有方法都是万无一失的。我在下面详细介绍的最好的一个:

        访问者可以是注册用户,也可以是尚未注册的新用户。您的代码应将购物车内容连同添加时间一起保存在数据库表中。记录需要与用户标识 - 已注册或未注册。注册后,您只需将注册用户的 ID 保存在购物车表中即可。如果是未注册用户,则需要使用 cookie 并在购物车表和 cookie 上保存 ID。

        如果用户在特定时间段内离开并返回,例如1 小时后,用户可以看到购物车内容完好无损。

        同时,您需要编写一个脚本来查找购物车中超过 1 小时的内容,然后将其删除并将库存退回到您的库存中。您可以设置一个 cron 每隔几分钟运行一次此脚本,例如15分钟等。

        如果用户在此过程运行后返回,则购物车将不包含添加的商品,用户将需要再次添加它们。

        【讨论】:

          【解决方案5】:

          在他们完全完成购买之前,不要从您的库存中删除数量。

          【讨论】:

            【解决方案6】:

            为此使用 cookie。我在我的客户商店使用它的方法。 示例:http://magazinsvarki.ru/

            【讨论】:

            • 对不起,这不是商店的正确逻辑。鉴于此,如果该站点留有 10,000 名客户,并且每个人订购了 3.2 个位置的商品,那么商店将是空的,因为所有商品都被一些客户保留,我们甚至不知道。所有新客户,无论是打电话还是步兵进入网站,都会知道该商品不可用。 Idea使用cookies很好,当客户决定订购时,您可以预订产品。
            • 还有这个,如果使用cookie可以减少服务器的负载。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-04
            相关资源
            最近更新 更多