【问题标题】:Proper Way to Use Cron Jobs使用 Cron 作业的正确方法
【发布时间】:2014-07-09 04:36:36
【问题描述】:

我目前正在开发一个必须每 10 秒执行一次任务的网站。该网站每十秒检查一次数据库,找到要处理的行,然后在每一行上运行一个简短的脚本。

该服务现在运行良好,但我只想确保一旦数据库变得非常大,该服务仍然可以高效运行。

我正在使用每分钟运行一次的 cron 作业,每 10 秒运行一次睡眠功能。

感谢您的帮助!

【问题讨论】:

  • 那么...你的问题是什么?
  • 我们在这里谈论多少数据?如果您的脚本不是快速且优化的,那么 10 秒太短了。我建议您查看数据库触发器。
  • 函数如何知道它应该在经过一定时间后死亡?您是否在一定数量的迭代中硬编码?由于两个进程同时运行,代码是否有可能在 60 秒左右运行两次?
  • 显然我不熟悉您的应用程序,但每 10 秒查询一次数据库似乎非常过分。为什么这么频繁?为什么 60 秒或 5 分钟不更合理?数据库中的变化真的需要那么快吗?当您的脚本注意到更改时会发生什么?该代码是否会触发另一个执行更密集工作的函数?
  • 好吧,数据库条目必须精确到 10 秒...如果我每分钟运行一次,那么应该在 20 秒内删除的条目,实际上会在一分钟内删除

标签: php mysql database cron


【解决方案1】:

只需确保您的任务不重叠,即等到上一个任务结束后再启动新任务。否则,如果您的任务花费超过一分钟(或您为它们设置的任何计时器),您最终将有大量并行运行的任务,并且您的系统将耗尽可用资源。

【讨论】:

  • 你建议如何等待?我所拥有的只是一个运行 PHP 文件的 cron 作业。等待是 PHP 中的东西还是 cron 作业本身?
  • @user3647894 你可能对stackoverflow.com/questions/10552016/…感兴趣
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多