【问题标题】:Recurring event in PHPPHP中的重复事件
【发布时间】:2012-12-23 10:11:47
【问题描述】:

您好,我想根据日历制作一个定期活动。我想问的是:如何触发事件?如果客户端没有登录或打开 webapp 以触发构造函数中的事件,我该如何让代码运行。

我知道 cron 作业可能是解决方案,但还有其他解决方案吗?(我想避免 cron 作业)。

【问题讨论】:

  • 为什么要避免使用 CRON?
  • 问题:您想对这个经常性(预定的)活动做什么?即更新数据库中的值?

标签: php codeigniter calendar recurring-billing recurring


【解决方案1】:

您必须运行某些东西才能使其正常工作; cron 是理想的选择,因为它可以定期运行脚本来检查诸如事件之类的事情。

否则,您将被用户操作触发,但正如您所说,该用户可能不会总是登录来触发它。

您可以修改您的代码,为所有用户设置任何用户触发操作。它有点复杂,因为您需要允许多个用户同时登录,而您只希望其中一个用户触发东西。我会在您的数据库中设置一个表来跟踪上次触发事件的时间,然后如果从那时起和现在的差距在用户登录时足够大,请在表中添加一个新条目,现在时间防止其他用户触发此操作,并触发您需要运行的位。

就像我说的那样,这不是一个完美的解决方案,我真的会推荐使用 cron。您有什么理由要避免使用 cron 吗?

【讨论】:

  • 感谢阿什利的回复。阻止我使用 cron 的唯一原因是我对它不是很熟悉。但如果这是最好的方法,我会试一试。再次感谢。
  • 一个 cron 很容易设置,它的 Wikipedia 页面值得一看,它解释了用于确定任务运行频率的语法。通常,cron 作业是通过命令行上的“crontab -e”添加的,使用任何 CLI 编辑器设置为默认值(通常是 Vi/Vim)。我认为现在很多典型的 Linux 发行版实际上也提供了一个注释掉的示例来帮助你。
【解决方案2】:

如果应触发该作业以使服务器保持良好状态,则应使用 cron 作业运行它,如果它是数据库管理,则数据库管理器具有事件表来制作 cron 作业对于用户而言,如果您在用户登录之前不这样做,那么它可能是工作负载安全的。您也可以手动登录以触发事件,也许是管理页面。

【讨论】:

  • 我想每年、每月等向 db 写信以进行计费。有此作业的 PhPMyadmin 事件表吗?
  • 是的,您可以使用Events 在X 时间内触发MySQL 查询,作为如何执行此操作的示例,您可以查看this tutorial 如何执行此操作。
  • 非常感谢里卡多!如果这对我有用,它将为我节省大量时间,阅读和编​​码 cronjobs...竖起大拇指
猜你喜欢
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 2010-12-17
  • 2012-08-10
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
相关资源
最近更新 更多