我正在构建一个应用程序,其中所有通知(电子邮件、短信、传真)的发送都是异步的。该应用程序将通知写入数据库,然后批处理作业将读取这些通知并使用适当的传输发送它们。
我第一次阅读以比分钟更快的速度运行 cron 的方法,并意识到这是一个坏主意。
批处理脚本是用 PHP 编写的,我猜想编写适当的守护进程会是一笔很大的开销(尽管我愿意接受任何建议,因为 PHP 也可以无限期地运行)。
我想到的解决方案是:
- 每 5 秒运行一次 PHP 脚本
- 检查上一次运行是否已完成,或中止(切勿同时运行 2 个批次)
- 如果脚本运行时间超过
x
几分钟,则终止脚本(以防挂起) - 从系统启动(如果发生重新启动)
知道如何做到这一点吗?
答案1
它感觉就像您尝试使用错误的架构/工具来完成工作一样,也许您应该考虑使用消息队列。beanstalkd有一些可用的 PHP 库,可以对队列进行阻塞读取。这里有一些关于如何继续的提示在这个 StackOverflow 问题中。