【发布时间】:2013-02-14 02:03:56
【问题描述】:
我有一个网站,拍卖会在不同的时间结束。拍卖结束后,我需要向卖家和买家发送一封自动电子邮件,以通知他们拍卖结束和结果。显然,我真的不能等待有人加载页面来运行脚本,那么有没有一种好方法可以通过检查当前时间并将其与拍卖结束的时间进行比较并运行该脚本来自动执行此操作?
该站点位于 UNIX 服务器上,因此可以选择 cron 作业,但我担心运行这样的 cron 作业会给服务器带来相当大的负载。
【问题讨论】:
-
请问您正在运行什么样的服务器基础架构?我认为您在 PHP 以外的其他东西中使用了计时器机制?如果您正在使用其他东西,我建议您将一些代码附加到该计时器机制上,该机制还会在计时器运行时执行邮件发送脚本。
-
我不知道我可以使用任何类型的计时器,除了页面上运行的 javascript。我不想使用 javascript,因为我实际上害怕有人操纵它并在拍卖中作弊。
-
那么您使用什么来确定谁赢得了拍卖?您如何能够(精确地)确定谁获胜?我会非常小心地在后端使用强大的计时器机制(例如在 Node.js 或 Perl 或 Python 中的 JavaScript 中......或者除了 PHP 之外的 anything)。我开始了解您的计时器是如何工作的,在用户访问页面时被触发并检查文件/数据库?现在听起来可能很困难,也可能没有必要,但是随着应用程序的增长,您会非常很高兴您在后台创建了一个运行所有这些机制的核心计时器。
-
是的,但是页面设置为每 60 秒刷新一次。您对如何实现这一点有任何建议吗?现在我有一个拍卖结束日期和时间,当页面加载时,它会根据当前日期和时间检查。
-
忠告:永远不要相信你的客户会做关键的工作。在这种情况下,为了快速解决问题,我要做的是创建一个 Perl 脚本(因为我们只选择了一个我们知道如何编写的脚本),它可以访问拍卖数据库并包含所有拍卖的“心跳”,这意味着它会跟踪系统时间和所有拍卖的结束。然后,当拍卖结束时,它会连接到一个专门编写的本地网页,该网页使用 PHP 进行所有电子邮件和数据库排序。这个解决方案不是最好的,但它是一个快速的解决方案,并且不再依赖客户端来获取重要的东西。