我们应该在服务器或移动设备上设置计时器吗?

Posted

技术标签:

【中文标题】我们应该在服务器或移动设备上设置计时器吗?【英文标题】:Should we put a timer on server or mobile? 【发布时间】:2020-09-16 13:03:27 【问题描述】:

我在服务器端(开始)和移动端工作。有一件有趣的事情,但我缺乏做决定的经验。我很感激你们的任何帮助。

I have to send an email after 50 minutes

1/ 如果我们为服务器上的每封电子邮件设置一个计时器,那么 1000 个用户,1000 个计时器?

2/ 如果我们在手机上处理,有一种情况是应用程序的所有内容在发送电子邮件之前都被操作系统杀死。

问题是:服务器和移动,哪个更好?

请告诉我您的解决方案。提前谢谢你!

【问题讨论】:

【参考方案1】:

在服务器上使用queue 系统。创建用于发送电子邮件的队列。

当您想发送电子邮件时,只需将其推送到队列中,在您的情况下使用时间或日期时间。然后运行Cron Job 来检查、处理和发送电子邮件。

此外,请确保实现重试功能,这样即使电子邮件发送失败,Cron 也会再次接受该工作并尝试发送number of times

这些链接会有所帮助:

Managing Cron Jobs in php

Setting Up Cron in Ubuntu

Setting up Cron using cPanel

如果您对如何设置 Cron 计时感到困惑,请查看此网站:

CronTab Guru

【讨论】:

假设需要以某种方式处理故障。自动重试是否合适取决于要求和失败原因。有些失败你可能不应该尝试重试。 @HarishST:感谢您的快速回复。我们可以使用 PHP 制作 Cron Job 吗? @SMor 是的,很明显。重试失败的案例总是取决于你提到的一些参数。但一般来说,您应该始终尝试捕获错误,并且取决于收到的错误,您可以尝试再次发送它。显然,如果错误是无法恢复的,那么就没有理由尝试再次发送它。这就是为什么作为开始阶段我在我的答案中包含了number of try。如果即使我们无法捕捉到错误,那么在number of times 之后不应运行该作业。 @LuongTruong 是的,你可以。您可以在您的操作系统上设置一个 Cron(我认为是 Windows 中的调度程序)。如果您使用的是 cPanel,那么您可以在 UI 的帮助下找到设置 Cron 的选项。如果你一般在 Linux 机器上,你可以设置 Cron。我将在答案中添加对材料的必要参考。【参考方案2】:

最好在您的服务器上实现计时器。如果您在设备上实现定时器,可能会发生并阻止该功能的负面可能性是设备处于关机模式或设备无法连接到服务器触发发送电子邮件。

服务器instance 应该是长期存在的,它永远不会宕机,这对于您的情况可能更可靠,正如@Harish ST 的回答,您可以从 cron 作业/cron 任务中获利。

【讨论】:

以上是关于我们应该在服务器或移动设备上设置计时器吗?的主要内容,如果未能解决你的问题,请参考以下文章

在移动设备上滚动而不是在桌面上滚动的倒计时暂停

CSS:悬停在移动设备或其他设备上作为切换

可以使用 HTML5/JS 远程访问移动设备上的文件吗?

PayPal iOS sdk - 从移动设备进行单次付款后,我应该从服务器上的 Ruby sdk 进行哪些调用?

当用户在移动设备上长按时如何在 div 或输入字段中选择完整的文本

我可以在使用 java 的移动设备上启用蓝牙吗?