繁体   English   中英

使用cron通过电子邮件将报价发送给用户

[英]Sending offers to users via email using a cron

对于我们的网站,我们需要向客户发送有关我们活动的新闻(不是垃圾邮件,他们可以退订,并且与问题无关)。 我们每天必须在凌晨4点左右发送电子邮件,因此自然而然地想到了创建一个cron-job来调用发送电子邮件的url。 然后,我进行了一些研究,发现由于服务器资源的占用,或者同时将我们标记为垃圾网站的可能性,同时发送电子邮件给所有用户不是最佳选择。关于做这样的事情:

创建一个调用php脚本(script1.php)的cron作业,该脚本创建一个每10分钟执行一次的cron,并调用另一个脚本(script2.php)script2.php检查是否有尚未邮寄的用户,如果在那里,它对数据库进行查询,并检索x尚未发送过的条目,但仍将邮件发送给那些用户更新了数据库标志,这样即使没有邮件也不会再次通过电子邮件发送,然后进行设置“已发送邮件”标志设置为默认值,并删除新的cron(每10分钟运行一次)或将其替换为默认值(每天凌晨4点)

对于代码,script2看起来像这样:

$unsentEmails = $users->getUnsentEmails($limit);
if ($unsentEmails != 0 ){
    mailer::sentEmails($emailData);
    $user->markSentNewsletter($userData);
}
else{
    utils::resetCronTab();
    $user->resetSentNewsletter();
}

对于缺少代码感到抱歉,但是我正在尝试弄清楚我是否想做的是这种情况下的最佳解决方案。 另外,由于所发送信息的性质,我试图避免使用外部服务(如果可能)。

任何帮助,将不胜感激

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~

认为我找到了一个更好的解决方案,因为我已经在cli上使用了php,所以我创建了一个cron来调用脚本,并在脚本内部发送了几封电子邮件,然后使用sleep($ seconds)命令等待下一批。 在测试服务器上工作

谢谢所有回答的人

首先没有得到为什么要拥有2个脚本。 第二个是多余的。 你的想法很好。 我将添加一些更正。 发送此电子邮件时,不要使用简单的标志来使用存储数据。 这样,您将能够控制通知的周期,并且如果您的cronjob不知何故在特定的一天没有发送电子邮件,那么它将看到剩下的日期。 在这种情况下,您根本不需要重置标志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM