Bạn có 2 tùy chọn để quản lý cả hai tùy chọn này dựa trên khoảng thời gian mà họ chọn.
-
Lưu trữ thời gian hết hạn với quảng cáo và bao gồm hết hạn> NOW (); trong bất kỳ truy vấn nào để chọn quảng cáo (loại này phủ nhận yêu cầu đối với trường 'hoạt động'.
-
sử dụng một sự kiện để quản lý điều này.
Phương pháp 1 có thể yêu cầu một số quản trị viên 'dọn dẹp quảng cáo' theo định kỳ.
Phương pháp 2 - bạn chưa thể tạo các sự kiện trong một thủ tục (lần trước tôi đã kiểm tra) nhưng chúng cho phép bạn đặt và quên các loại nhiệm vụ quản trị này mà không cần phải chạy các kiểm tra khác và những gì không nên làm.
Mỗi sự kiện phải có một tên duy nhất nếu không bạn sẽ giết sự kiện đã được chỉ định ...
ví dụ:
<?php
$qry = "insert into ads values ( 'x', 'y', 'z' );";
/* db execute qry (pdo or what ever) */
$adId = // retriev a unique reference for ad.
$days = $_POST['expire'] == 16 ? 16 : 8;
$qry = "CREATE EVENT updateAd_".$adId."
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL ".$days." DAY
ON COMPLETION NOT PRESERVE
DO
update ads set active = 'false' where ad_id = ".$adId.";";
// db execute qry (pdo or what ever);
?>
Sự kiện được lưu trữ trong cơ sở dữ liệu mysql chứ không phải của riêng bạn, vì vậy bạn cần một số quyền cấp quản trị viên để triển khai.