gpt4 book ai didi

mysql - 一秒内选择过多 - Mysql

转载 作者:行者123 更新时间:2023-11-29 14:17:43 25 4
gpt4 key购买 nike

我有一个系统,每天早上都会为我和我的客户发送电子邮件。通过 iframe 访问我的网站会自动触发此过程。

我通常会收到同一封电子邮件两次。

我在 MySQL 数据库上创建的用于控制这一点的简单过程如下:

运行此查询:

选择向我发送电子邮件的客户

SELECT name, email FROM clients WHERE DATE_FORMAT(lastsend, '%d/%m/%y') <> DATE_FORMAT(now(), '%d/%m/%y')

发送电子邮件的功能

我使用 vb.net 发送电子邮件

发送所有电子邮件后更新表客户端

UPDATE clients SET lastsend = Now();

我需要一种方法来锁定它,以防止相同的电子邮件在同一天多次发送。

谢谢

最佳答案

你所拥有的是竞争条件。有很多方法可以解决这个问题,其中一些方法比其他方法更有效。 “稳健”意味着保证永远不会有重复的电子邮件。

这是一个简单的方法。在表中添加第二个日期列:SendStart。在您尝试发送电子邮件之前,将 send start 设置为 now(),并将 WHERE 子句更改为:

WHERE DATE_FORMAT(lastsend, '%d/%m/%y') <> DATE_FORMAT(now(), '%d/%m/%y') and
DATE_FORMAT(sendstart, '%d/%m/%y') <> DATE_FORMAT(now(), '%d/%m/%y')

您仍然可能会在第一个查询和第二个查询之间出现竞争条件。不过,时间跨度要小得多,所以可能性也小得多。

最后,你会记录邮件的发送时间和是否发送(除非发送成功,否则不要设置lastsend)。您可以对不成功的电子邮件进行批量报告和错误处理。

关于mysql - 一秒内选择过多 - Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12332525/

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