在我的一个 Web 应用程序中,我通过 AMAZON SES 使用 cron 作业功能向用户发送每日邮件。cronjob 将以 10 分钟的间隔运行。这个过程会喜欢
$sql-mysql_query("SELECT * FROM users WHERE send_date='2013-07-13' and alert_send=0");
while($row=mysql_fetch_array($sql)) {
// Get email id of the user and compose meggage
// Create a new Amazon Request and send the mail
// Update alert_send=1
}
如果循环包含更多计数,即假设有 500 封邮件,则在接下来的 10 分钟,另一个 cron 作业将开始并开始发送邮件。最终用户将相应地收到两次或三次邮件。
IE。如果循环包含 500 个数据
Cron A 将在 12:00 开始并获取所有 500 个数据并发送电子邮件。假设在 10 分钟内发送 120 封邮件。
Cron B 将在 12:10 开始并从 120 - 500 获取数据。这也将发送邮件。
通过这个结果,第 121 个用户将收到来自 Cron A 和 Cron B 的邮件。
我尝试限制查询计数。但问题是我们无法预测每个循环何时结束。即有时发送邮件需要 4、2、5、6 或 10 秒。
有没有办法避免这种重复?有没有办法杀死现有的 cronjob 并开始新的?
提前致谢