Php 如何在用户拍卖结束时自动通知用户?
我正在建立一个拍卖网站(很像eBay),在那里你可以创建具有给定基本价值和持续时间的拍卖 这基本上是通过PHP和MySQL完成的。在定义的时间段内,用户可以进行投标 为了通知拍卖人(调用PHP脚本或触发其他类型的事件),我应该使用什么方法异步知道拍卖何时结束 编辑:Php 如何在用户拍卖结束时自动通知用户?,php,mysql,stored-procedures,cron,Php,Mysql,Stored Procedures,Cron,我正在建立一个拍卖网站(很像eBay),在那里你可以创建具有给定基本价值和持续时间的拍卖 这基本上是通过PHP和MySQL完成的。在定义的时间段内,用户可以进行投标 为了通知拍卖人(调用PHP脚本或触发其他类型的事件),我应该使用什么方法异步知道拍卖何时结束 编辑: DELIMITER // CREATE PROCEDURE closeAuctions () BEGIN DECLARE now TIMESTAMP DEFAULT CURRENT_TIMESTAMP; START TRANSAC
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 ;
我有一个cronjob启动并运行(每5分钟一次)。我的PHP脚本调用一个MySQL存储过程,该过程选择所有无效拍卖(AuctionEndDateTimeSELECT
,所以我希望返回更新的行,但它只返回我为显示当前时间戳而执行的第一个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 ;
我想要更新的行,因为它们包含我需要通知拍卖商的信息,我正试图用存储过程来实现这一点,所以我只需访问数据库一次
已解决:
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 ;
分隔符//
创建过程()
开始
现在声明时间戳默认当前时间戳;
启动交易;
从拍卖截止日期<现在且拍卖结束='0'的拍卖中选择*进行更新;
更新拍卖集拍卖已结束='1',其中拍卖截止日期<现在;
犯罪
结束//
定界符;
编写一个脚本,并在脚本中查询结束时间等于现在的数据库。
然后循环浏览找到的拍卖清单,并向所有者发送电子邮件
要使此过程自动化,请每隔一分钟左右通过
CRON运行此脚本。编写一个脚本,并在脚本中查询结束时间等于现在的数据库。
然后循环浏览找到的拍卖清单,并向所有者发送电子邮件
要使此过程自动化,请每隔一分钟左右通过CRON运行此脚本。不确定=NOW()
是否是件好事。如果拍卖在09:56:35
结束,脚本在09:56:00
和09:57:00
运行,会发生什么情况?我可能会通过cron来做,如果你在线做,一旦站点满了,它将挂起搜索拍卖的负载,直到完成循环和发送电子邮件。最好是cron它,即使它每5分钟运行一次SELECT*FROM tblautions,其中AuctionEndDateTime不一定是now函数,只需在DB和in script中使用时间戳,然后进行比较时间戳不好m'kay坚持使用datetime字段类型不确定=now()
是件好事。如果拍卖在09:56:35
结束,脚本在09:56:00
和09:57:00
运行,会发生什么情况?我可能会通过cron来做,如果你在线做,一旦站点满了,它将挂起搜索拍卖的负载,直到完成循环和发送电子邮件。最好是cron它,即使它每5分钟运行一次SELECT*FROM tblautions,其中AuctionEndDateTime不一定是now函数,只需对DB和in脚本使用时间戳,然后进行比较时间戳不好m'kay坚持日期时间字段类型最好将解决方案添加为答案,而不是添加问题最好将解决方案添加为答案,而不是添加问题