php - 如何在他/她的拍卖结束时自动通知用户?

标签 php mysql stored-procedures cron

我正在构建一个拍卖网站(很像 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/

相关文章:

php - 值作为 2147483647 插入数据库

php - 从 php/mysql 获取多条记录

c# - 从 MsSQL 传输到 MySQL 错误

c# - SM?使用 if exists drop then create 和 no sp_executesql 编写所有 SQL 存储过程的脚本

asp.net - 在前端捕获从 sql server 存储过程返回的错误消息

php - 如何在 Instagram php api 中转到以前的图像?

php - PHP/MySQL PDO 的奇怪行数返回

sql - 重置或更新数据库表中的行位置整数

php - 将 html 代码写入 mysql 以解释数据库的表

python - 我应该如何解压 dict 键,值作为列,嵌入式 MySQL 语句中的值?