首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在非cron作业方法的PHP web应用程序中调度失败的电子邮件?

问如何在非cron作业方法的PHP web应用程序中调度失败的电子邮件?
EN

Stack Overflow用户
提问于 2013-04-23 21:36:35
回答 4查看 168关注 0票数 1

我正在开发web应用程序,其中有一个在预定时间发送电子邮件的要求。正确的场景是:如果邮件功能由于任何原因而失败,重试尝试应该在特定的时间段之后进行,直到邮件成功。所以这里的问题是,如果我在某个地方记录了邮件详细信息(这里是mysql db表),重试机制是如何实现的。这可以在不使用cronjob的情况下实现吗?如果是,如何??

提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2013-04-23 21:40:47

您无论如何都需要某种cron系统,但它可能只是一个调用站点上特定页面的第三方服务。为什么你一开始就不想使用cronjob呢?

那么您的过程将只是记录队列中任何失败的尝试,并每隔x小时处理该队列(=发送邮件)。您还可以考虑设置最大重试次数或类似这样的设置。

票数 3
EN

Stack Overflow用户

发布于 2013-04-23 21:44:27

如果您必须使用计划时间,我肯定会使用cronjob。要确保电子邮件已发送,只需使用true/false循环检查其是否已发送。

票数 0
EN

Stack Overflow用户

发布于 2013-04-23 21:56:27

您可以尝试创建一个包含无限循环的页面。这是完全未经测试的,我以前从来没有实现过这样的东西--这只是一个建议:

代码语言:javascript
复制
$hourToSend = 17; //this is the specified time to send (e.g. an hour, day, week..)

while(1)
{
    start:
    if(emailNotSent() == true && date('H') == $hourToSend) //boolean (function or variable) set after the email script has executed. could even be an array of email IDs.
    {
        resendEmail();
    }
    else
    {
        sleep(3600); //set an interval to check for failed emails, default = every hour
        goto start;
    }
}

这假设您访问的服务器具有良好的正常运行时间,这不会受到始终打开的一个浏览器窗口的影响(对于监视、报告、日志记录等可能是有好处的)。

+1对于有趣的问题,评论和建议,欢迎

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16170788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档