我们运营着一个拥有约500,000名活跃客户的电子商务网站。我们通过外部邮件服务(https://www.campaignmonitor.com/)定期发送新闻通讯,但随着公司的发展和我们获得更多客户,我们的新闻通讯费用会增加。 我最近遇到了Amazon SES,这对我们来说非常合适,因为它们很便宜,而且由于我们已经将AWS用于我们的服务器,因此它使事情更容易维护。我知道有更便宜的替代品,但我更愿意坚持亚马逊SES。
我们假设我在我的系统中创建了一个时事通讯,向每个今天过生日的人发送电子邮件。恰好有400,000人今天过生日,所以发送了400,000封电子邮件。 第二天,剩下的10万人生日以及昨天已经收到生日电子邮件的10万人,但他们的出生日期改为现在,因为他们在注册时输入错误。该系统现在可以发送200,000封电子邮件,但应该知道只发送100,000封电子邮件,因为100,000封邮件已经收到了这段时间(365天)的电子邮件。
我遇到的问题是数据库和脚本的效率。
第一天,我将40万人的电子邮件地址存储在一个名为" sent"的表中。 在第二天,我检索要发送到的所有电子邮件地址的列表。然后我有以下选择:
我意识到这些是非常极端的例子,这些例子在真实环境中永远不会发生,但我更愿意(现在)正确地实现这一点,而不必在将来再次重新审视它。
如果Amazon SES内置了此功能,我很想知道我在哪里可以找到它!我已经搜索了他们的文档,但我无法看到它。
有没有人在此领域有任何经验,或有任何建议?我试图想出一个好的解决方案几天来一直绞尽脑汁,但我无法想出任何东西。
HELP! :)
编辑:我正在使用MySQL。我已经研究过No-SQL,但感觉不是必要的。 编辑:生日礼物只是简报的一个例子。它应该是一个完全通用的系统,它不依赖于数据包含的任何预定义概念。编辑:服务器已经实现了良好的电子邮件实践,例如SPF,DKIM等。
编辑:我决定重构一些东西并创建我自己的文件和/或基于内存的索引器,它在一定程度上解决了这个问题。案件已经关闭,至少目前是这样。答案 0 :(得分:2)
您可以编写自己的系统或利用现有工具。在谷歌Sendy https://sendy.co/是第一个结果为'php mysql SES时事通讯'根据您发送的标签,它似乎在你的小巷里。有1000多个其他基于PHP / Mysql的新闻通讯程序可能适合您。那个看起来很整洁。
关注服务器负载。我会把一个"小" AWS中的实例,仅用于您的电子邮件系统。这样您就不必担心长时间运行的流程或超时会导致生产网站出现问题。 200,000或500,000条记录真的不是那么多。我打赌你花更多的时间等待Amazon SES做出回应而不是实际等待查询返回或解析。