我在数据库中的广告表中添加了一些行,它们的属性包括创建日期和到期日期。
我需要 php 脚本来自动删除其到期日期已到的行。
请协助我的项目。谢谢你
您可以使用 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();
<?php
$today = getdate();
if($today <= $expirayDate)
{
//your deletion logic
}
?>
另一种方法是过滤您的选择查询,即隐藏所有未过期的字段;
$query = "SELECT * FROM `yourTable` WHERE `expiration` >= NOW();";
您正在寻找的是crontab
.
使用它,您将能够安排脚本在确定的时间运行,例如:
运行deleteExpiredRows.php
每个5 minutes
运行updateOnlineUsers.php
每个2 hours
Cron 非常易于使用。查看此快速参考指南
/path/to/hosting/php /home/user/public_html/script.php
php 的路径可能会有所不同,因此请联系您的主机以获取此信息。有关 crontab 的更多信息可以在 stackoverflow 上找到。
注意:您可能需要检查您的网络托管服务是否支持 crontab。
完成此操作后,您只需创建 PHP 脚本以删除比当前时间早的每一行。