我正在构建一个拍卖网站(很像 eBay),您可以在其中创建具有给定基值和持续时间的拍卖。
这基本上是用 PHP 和 MySQL 完成的。在此定义的时间段内,用户可以出价。
我应该使用什么方式异步知道拍卖何时结束以通知拍卖师(调用 PHP 脚本或触发另一种事件)?
编辑:
我有一个 cronjob 启动并运行(每 5 分钟一次)。我的 PHP 脚本调用一个 MySQL 存储过程,该过程选择所有无效拍卖 (AuctionEndDateTime < NOW()) 并将它们更新为已结束。
由于我在存储过程中执行 SELECT
,我希望返回更新的行,但它只返回我对 fech 执行的第一个 SELECT
当前时间戳。
DELIMITER //
CREATE PROCEDURE closeAuctions ()
BEGIN
SELECT @TIMESTAMP_NOW := NOW();
START TRANSACTION;
SELECT * FROM Auctions WHERE auction_deadline < @TIMESTAMP_NOW AND auction_closed = '0' FOR UPDATE;
UPDATE Auctions SET auction_closed = '1' WHERE auction_deadline < @TIMESTAMP_NOW;
COMMIT;
END //
DELIMITER ;
返回:
+-------------------------+
| @TIMESTAMP_NOW := NOW() |
+-------------------------+
| 2013-07-26 15:57:20 |
+-------------------------+
我想要更新的行,因为它们包含我需要通知拍卖师的信息,我正尝试使用存储过程来执行此操作,因此我只需访问数据库一次。
已解决:
DELIMITER //
CREATE PROCEDURE closeAuctions ()
BEGIN
DECLARE now TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
START TRANSACTION;
SELECT * FROM Auctions WHERE auction_deadline < now AND auction_closed = '0' FOR UPDATE;
UPDATE Auctions SET auction_closed = '1' WHERE auction_deadline < now;
COMMIT;
END //
DELIMITER ;
最佳答案
编写脚本并在脚本中从结束时间等于现在的数据库中查询拍卖。 然后遍历找到的拍卖列表并向所有者发送电子邮件。
要自动执行此过程,请每分钟左右通过 CRON
运行此脚本。
关于php - 如何在他/她的拍卖结束时自动通知用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17835923/