PHP:自动删除数据库中的行并在服务器上保存数据的正确方法是什么

时间:2013-08-30 06:18:39

标签: php mysql phpmyadmin xampp

大家好,我需要有这些情况的建议:

例如,我有一个免费的分类发布网站,用户可以在其中发布分类广告.. 该广告将在网站上列出最多30天,然后在第31天它将自动删除数据库以及服务器上的图像..问题是:

$db_ad_tbl('id','user_id','title','description',timestamp);

这样做的正确方法是什么? 任何人都可以建议涵盖相同情况的教程/链接吗?

2 个答案:

答案 0 :(得分:2)

另一种不需要cron的方法是使用MySQL事件。如果您能够提出正确的查询,则可以将其设置为重复发生的事件。 phpMyAdmin 4.0.x支持从界面处理事件。

请参阅http://dev.mysql.com/doc/refman/5.5/en/events.html

答案 1 :(得分:1)

正如Barmar所说,你应该为这项任务添加一个cronjob。您可以编写一个简单的PHP脚本,然后将其添加到您的crontab中,例如:

1 0 * * * php -f /path/to/file/clean.php

这意味着php文件将每天午夜执行。

只是几点说明:

  1. 该文件不应位于您的网络文件夹中
  2. 您可能希望通过电子邮件进行一些测试并报告错误(例如无法连接到数据库)
  3. 如果你构建更多的人,你应该保留一个列表,以防你切换服务器(或服务器死机)
  4. 如果您使用配置文件(例如:存储您的数据库连接详细信息),您应该确保cronjob可以使用它。
  5. 大多数托管平台允许crontab编辑并使用他们运行Web服务器的同一用户运行它们,因此它应该不是问题。

    实际上没有其他好的解决方案可以创建cron作业。这当然是每次从数据库中获取数据时都不检查时间戳。如果它比到期数据大(DELETE FROM my_table WHERE timestamp> [Expiry Timestamp]),则可以删除它。 。这当然是有风险的,因为每次尝试计数时都必须包含时间戳,如果从数据库中没有请求过期资源,则可能会永远存储所有内容。