PHP- MySQL cronjob发送邮件循环重复

时间:2013-07-18 07:53:26

标签: php mysql amazon-web-services cron cron-task

在我的一个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作业将启动并开始发送邮件。最后,用户将相应地收到邮件两次或三次。

即。如果循环包含500个数据

Cron A将从12:00开始,获取所有500个数据并发送电子邮件。假设发送邮件120 10分钟。

Cron B将于12:10开始并从120 - 500获取数据。这也将发送邮件。

通过这个结果,第121位用户将收到来自Cron A和Cron B的邮件。

我试过限制查询次数。但问题是我们无法预测每个循环何时结束。即有时发送邮件需要4,2,5,6或10秒。

有没有办法避免这种重复?有没有办法杀死现有的cronjob并启动新的?

提前致谢

1 个答案:

答案 0 :(得分:0)

每次cronjob开始时你都可以杀死正在运行的cronjob

这样的名字:

pkill process-name

或者像id:

这样
kill 1234

另外你可以看看这个使用php代码的博客:

http://abhinavsingh.com/blog/2009/12/how-to-use-locks-in-php-cron-jobs-to-avoid-cron-overlaps/