php/mysql 调度电子邮件与邮件配额

标签 php mysql email amazon-ses quota

我需要在 php/mysql 中编写自己的电子邮件调度程序。我正在使用亚马逊的 SES 发送电子邮件。我在“队列”MySQL 表中记录了需要通过电子邮件发送给谁和什么。成功发送电子邮件后,每条记录都会被删除。我想尽快发送这些电子邮件,但我需要记住亚马逊的配额。他们限制您允许的电子邮件发送/秒。

我怎样才能安排这个不超过限制?我知道我可以编写一个 php cron 脚本,它只会从队列中提取 X 条记录并发送这些记录,但是如果我的 cron 每分钟只运行一次,就会浪费很多时间。 (X 是配额限制/秒)

另一方面,如果我的电子邮件配额增加并且我可以每秒发送 1000 封邮件(或一些荒谬的东西),如果我的脚本需要很长时间才能执行,我可能会遇到问题。 cron 可能会再次启动并从队列表中提取相同的记录。

最佳答案

您应该在执行脚本时创建一个锁定文件,并在执行完成后将其移除。然后,如果脚本在上一次执行未完成的情况下再次运行,您可以提醒自己。

$filename = 'sending_emails.txt';
if (file_exists($filename)) {
    mail('your@email.com', 'Execution overlap', 'Adjust script parameters!');
    exit;
}
file_put_contents('sending_emails.txt', '1');
// Send e-mail logic here
unlink($filename);

关于php/mysql 调度电子邮件与邮件配额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494629/

相关文章:

c++ - 多次调用存储过程时出现 mySQL C++ 连接器 "Commands out of sync"

mysql - 获得最后十场胜利

tomcat - 邮件/ session 资源工厂在 Struts 应用程序中不起作用

php - 如何在if else语句中调出mysql的结果

php - MYSQL - 如何使用 ORDER BY 和 LIMIT 对列进行排序,然后按另一列对这些结果进行排序

php - 使用 webhook 获取 Facebook 线索广告的表单名称

php - Mysql ASC 函数 ORDER only first ID's

php - 使用 PHP 和 MySQL 填充 Quiz Web 应用程序表单

php - 通过电子邮件发送 POST 的 print_r 没有任何安全漏洞,对吗?

email - 电子邮件的唯一标识符