저는 주어진 기본 값과 기간으로 경매를 만들 수있는 경매 사이트 (이베이와 훨씬 비슷합니다)를 만들고 있습니다.경매가 끝나면 자동으로 사용자에게 알리는 방법은 무엇입니까?
이것은 PHP와 MySQL로 기본적으로 수행됩니다. 이 정의 된 기간에 사용자는 입찰을 할 수 있습니다.
경매인에게 알리기 위해 (PHP 스크립트를 호출하거나 다른 종류의 이벤트를 트리거하기 위해) 경매가 종료 될 때 비동기 적으로 알 수 있어야한다는 것을 의미합니까?
편집 :
내가 cronjob에 위로 실행 (5 분마다)이있다. 내 PHP 스크립트는 모든 잘못된 경매 (AuctionEndDateTime < NOW())를 선택하고 닫힌 상태로 업데이트하는 MySQL 저장 프로 시저를 호출합니다.
스토어드 프로 시저에서 SELECT
을 수행하고 있으므로 업데이트 된 행을 반환 할 것으로 예상했지만 현재 시간 소인을 표시하는 첫 번째 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 ;
대답을 추가하는 대신 답변을 답을 추가하는 것이 더 좋습니다. – Ram