gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:28:39 25 4
gpt4 key购买 nike

在我的一个 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 条数据并发送电子邮件。假设用 10 分钟发送邮件 120。

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

由此结果,第 121 个用户将收到来自 Cron A 和 Cron B 的邮件。

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

有什么办法可以避免这种重复吗?有什么方法可以终止现有的 cronjob 并开始新的吗?

提前致谢

最佳答案

每次 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/

关于PHP-MySQL cronjob发送邮件循环重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17717733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com