如何在超时后重置sql字段

时间:2016-04-17 06:11:10

标签: php mysql

所以我的数据库表中有一个特定的字段,我想在一段固定的时间后重置为0,例如1周。我的语言是php。有什么办法吗?请帮我 好的,基本上我有一个专栏“激活点”。只要用户进行某种活动,这些点就会增加。但我需要每周将积分重置为0

2 个答案:

答案 0 :(得分:0)

使用PHP,没有真正的很好的方法。

您有几个选择:

  1. 使用MySQL新增的内置调度程序:Event Scheduler

  2. 使用PHP或MySQL以外的软件,如cron jobs

  3. 使用像PHPScheduler这样的PHP库,它不是 true 调度程序。

  4. 选项1 可能是您最好的选择。它内置于MySQL中,您不必担心弄乱您尚未使用的任何其他软件。

    选项 2易于实现,但确实涉及使用除PHP和MySQL之外的其他工具。您可以了解如何使用this post设置cron作业。

    我不建议使用

    选项3 ,除非您绝对想要使用PHP来执行此操作。但是您将受限于调度的自定义。 PHPScheduler在技术上并不是真正的调度程序,您可以在this post中阅读原因。这个帖子链接的时间比较旧,所以它会提到MySQL中没有可用的调度,但是自那篇文章发布以来,已经制作了事件调度程序。

    要使用Event Scheduler选项1 ),您应该参考this really really good tutorial,如果您遇到任何问题,请this documentation

    预览了使用事件调度程序是多么容易:

    CREATE EVENT nazzus_cool_event
    ON SCHEDULE EVERY 1 MINUTE
    STARTS CURRENT_TIMESTAMP
    ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    DO
       INSERT INTO messages(message,created_at)
       VALUES('Nazzus cool event just happened again!',NOW());
    

    此代码将创建一个名为event的{​​{1}},它将从nazzus_cool_event(现在)开始每隔1分钟发生一次,并从现在起一小时结束。它会将一些数据插入到消息表中。

    这很简单,但你一定要快速浏览一下这个great tutorial,这样你就可以看到更多它的优点。

答案 1 :(得分:-1)

您可以编写一个简单的mysql语句,将您的字段更新为0并将其放在每周运行的cronjob上。

编辑:

创建sql语句,重置你的列,把它放在php文件中并在cronjob上调用它,你可以检查它here,你可以随时使用一些免费的在线解决方案,如c this one < / p>