1

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

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

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

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

4

2 回答 2

2

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

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

于 2013-08-30T13:00:01.363 回答
1

正如 Barmar 所指出的,您应该为此任务添加一个 cronjob。您可以编写一个简单的 php 脚本,然后将其添加到您的 crontab 中,例如:

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

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

只是一些注意事项:

  1. 该文件不应位于您的网络文件夹中
  2. 您可能想通过电子邮件进行一些测试并报告错误(例如无法连接到数据库)
  3. 如果您构建了更多的这些,您应该在某处保留它们的列表,以防您切换服务器(或服务器死机)
  4. 如果您使用配置文件(例如:存储您的数据库连接详细信息),您应该确保使用 cronjob 的用户可以访问它。

大多数托管平台都允许 crontab 编辑并使用与运行 Web 服务器相同的用户运行它们,因此这应该不是问题。

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

于 2013-08-30T06:37:18.720 回答