3

我在数据库中的广告表中添加了一些行,它们的属性包括创建日期和到期日期。

我需要 php 脚本来自动删除其到期日期已到的行。

请协助我的项目。谢谢你

4

3 回答 3

4

您可以使用 MySQL 的事件调度程序在这些记录过期时自动删除它们:

CREATE EVENT delete_expired_101
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 3 WEEK DO
DELETE FROM my_table WHERE id = 101;

或者定期自动清除所有过期记录:

CREATE EVENT delete_all_expired
ON SCHEDULE EVERY HOUR DO
DELETE FROM my_table WHERE expiry < NOW();
于 2012-09-02T14:30:11.873 回答
2
<?php
   $today = getdate();
   if($today <= $expirayDate)
   {
       //your deletion logic
   }
?>

另一种方法是过滤您的选择查询,即隐藏所有未过期的字段;

$query = "SELECT * FROM `yourTable` WHERE `expiration` >= NOW();";
于 2012-09-02T13:32:58.780 回答
1

您正在寻找的是crontab.

使用它,您将能够安排脚本在确定的时间运行,例如:

运行deleteExpiredRows.php每个5 minutes
运行updateOnlineUsers.php每个2 hours

Cron 非常易于使用。查看此快速参考指南

在您的虚拟主机上设置 crontab:

/path/to/hosting/php /home/user/public_html/script.php

php 的路径可能会有所不同,因此请联系您的主机以获取此信息。有关 crontab 的更多信息可以在 stackoverflow 上找到。

注意:您可能需要检查您的网络托管服务是否支持 crontab。

完成此操作后,您只需创建 PHP 脚本以删除比当前时间早的每一行。

于 2012-09-02T14:42:39.660 回答