【发布时间】:2021-09-21 03:52:53
【问题描述】:
上下文
我目前正在实施一项功能,以使用 PHP 和 Firebase 通过网络表单在特定时间段内安排通知。
为了发送通知,我使用 Firebase 并将通知发送到 Android/Ios。
为了安排通知,我使用了AT linux 服务,因为它似乎比cron 更适合,因为cron 以特定频率运行而AT 没有,它在特定时间运行。
关于 AT 的手册页:man page 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 会多次运行这项工作,对我来说,这不是我想要的。
【问题讨论】:
标签: php cron amazon-elastic-beanstalk scheduled-tasks at-job