如何每 5 秒可靠地运行一次批处理作业?

如何每 5 秒可靠地运行一次批处理作业?

我正在构建一个应用程序,其中所有通知(电子邮件、短信、传真)的发送都是异步的。该应用程序将通知写入数据库,然后批处理作业将读取这些通知并使用适当的传输发送它们。

我第一次阅读以比分钟更快的速度运行 cron 的方法,并意识到这是一个坏主意。

批处理脚本是用 PHP 编写的,我猜想编写适当的守护进程会是一笔很大的开销(尽管我愿意接受任何建议,因为 PHP 也可以无限期地运行)。

我想到的解决方案是:

  • 每 5 秒运行一次 PHP 脚本
  • 检查上一次运行是否已完成,或中止(切勿同时运行 2 个批次)
  • 如果脚本运行时间超过x几分钟,则终止脚本(以防挂起)
  • 从系统启动(如果发生重新启动)

知道如何做到这一点吗?

答案1

感觉就像您尝试使用错误的架构/工具来完成工作一样,也许您应该考虑使用消息队列。beanstalkd有一些可用的 PHP 库,可以对队列进行阻塞读取。这里有一些关于如何继续的提示在这个 StackOverflow 问题中

相关内容