首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一定时间后自动更新行

在一定时间后自动更新行
EN

Stack Overflow用户
提问于 2013-03-14 10:53:08
回答 3查看 6.4K关注 0票数 1

我做了一个网站,我的用户可以在那里发布广告。

现在,我想在特定时间后自动更改他们的Ads表中的一行。

例如:假设我的用户上传/发布了一个广告,在他发布它之前,他可以选择是否要让它在8天或16天内可见。

我应该用cron检查,还是有更好的方法呢?

Visible被称为数据库的“活动”,- tinyint 1或0。

提前谢谢你,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-14 11:16:55

您有两个选项来管理这两个选项,这两个选项都基于他们选择的时间尺度。

  1. 将过期时间与广告一起存储,并在选择广告的任何查询中包含过期>现在();(这种操作取消了'active‘字段的要求。
  2. 使用事件来管理这一点。

方法1可能需要一些管理员定期“清理广告”。

方法2-你还不能在一个过程中创建事件(我最后一次检查),但它们允许你设置和忘记这些管理职责,而不必运行其他检查。

每个事件必须有一个唯一的名称,否则您将终止已指定的事件...

示例:

代码语言:javascript
复制
<?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);
?>

该事件存储在mysql数据库中,而不是您自己的数据库中,因此您需要一些管理员级别的权限才能实现。

票数 1
EN

Stack Overflow用户

发布于 2013-03-14 10:55:42

你能保留到期日吗?因此,创建一个列来存储日期。当用户创建广告时,然后计算8天后的日期,并将其存储在列中。然后,在提取广告的查询中,您可以限制那些到期日期仍在未来的广告。

票数 1
EN

Stack Overflow用户

发布于 2013-03-14 11:02:20

存储过期日期。然后使用查询:

代码语言:javascript
复制
select * from table where Expiration_date>now();

如果您使用的是PHP,请查看strtotime函数。您可以使用它来创建日期,如下所示:

代码语言:javascript
复制
$expiration = date("Y-m-d H:i:s",strtotime('+ '.$num.'days'));

如果您有'Expiration_date‘字段,则'active’字段不是必需的。这句话

代码语言:javascript
复制
select Expiration_date>now() as active from table

都是等同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15400342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档