我有一个网页应用程序,让用户设置提醒某些任务。一旦提醒到期,他们会收到一封关于它的电子邮件。为了完成这项工作,我有一个循环,每分钟检查是否有任何提醒在这一分钟到期。如果是这样的话,我会发送提醒邮件。
提醒时间以utc时间在数据库中保存,但在查看提醒时转换回浏览器时区。
到目前为止,这是很好的工作,但没有考虑到与我的服务器处于不同时区的用户。在实践中,这会导致用户在创建提醒时在另一个时间获得提醒,而不是他们设置的提醒。
为了解决这个问题,我的想法是首先让用户配置他们的时区。然后,在我的cron任务中,我会在下一个+/- 12小时内收到所有的提醒(考虑所有可能的时区偏移)。对于每个提醒,可能是到期的,我会检查它是否是它的用户已经配置的时区的实际到期。如果是这样的话,就把它寄出去。
这是个好办法吗?我不太确定。特别是,我可能需要检查很多提醒,这让我有点困扰( +/- 12小时)。也许还有更有效的方法?
发布于 2022-01-08 17:36:28
我建议您在表中维护一个字段,在该字段中存储提醒请求以存储客户端的时区,还有一个用于维护不同时区的表,无论何时您将遍历计划作业,将所请求的时区与相应的提醒进行比较并发送相应的提醒。
https://stackoverflow.com/questions/70634745
复制相似问题