语境
我目前正在实施一项功能,通过使用 PHP 和 Firebase 的网络表单来安排特定时期的通知。
要发送通知,我使用 Firebase 并将通知发送到 Android/Ios。
为了安排通知,我使用了AT
linux 服务,因为它似乎比 更适合cron
,因为cron
它以特定频率运行而AT
不是,它在特定时间运行。
关于 AT 的手册页:手册页 AT
示例代码
/usr/bin/php `send_notification.php` | at 2021-07-11 15:40
这将在 linux 上创建一个文件,该文件将在 2021-07-11 15:40 期间仅运行一次。
问题
AT
服务,如,在CRON
操作系统上的目录中创建代表作业的文件。
1 - 如果 AWS 上的机器进行扩展,作业可能会重复,因此会多次发送通知。(注:我对机器缩放了解不多,但我相信它应该会发生)
2 - 如果机器由于包含某些功能或类似的东西而处于停机状态,我相信它目前的工作方式不会被执行。
3 - 另一个问题,但不是主要问题,如果我使用的是 docker 容器。由于 Ubuntu + PHP 在容器内,如果我重新启动容器,作业文件可能会丢失,所以在这种情况下,我相信一个解决方案是使用卷,但现在这不是我的问题,因为目前的应用程序仅使用 AWS EB 上的一台机器和 PHP 映像。
怀疑
有什么解决方案可以使用 PHP 来解决这个重复的工作问题吗?
使用的方法
AT
是最合适的吗?我看到很多人都在谈论使用CRON
,但 CRON 会多次运行这项工作,对我来说,这不是我想要的。