我需要向大量成员发送公共邮件(例如5000名成员)。
我需要使用SMTP服务器发送它。
我将从数据库获得这5000个成员的邮件ID。
新成员将在每小时添加到数据库表
例如
1小时后,会员人数将达到6000通过划分任务
,这是向所有这些成员发送邮件的最佳方法答案 0 :(得分:0)
您需要一个消息代理。 http://www.rabbitmq.com/或http://www.zeromq.org/会对您有所帮助。
答案 1 :(得分:0)
您可以创建一种方法来跟踪已邮寄的成员(例如,数据库表上的布尔值),创建一个向X人发送邮件的脚本,并配置一个cron以每隔Y次执行此脚本。 / p>
如果成员数量的增加没有减慢并且与您的示例匹配,则需要配置脚本和cron以每小时输出超过1000条消息(例如,如果脚本发送100条消息,它应该运行超过1000条消息每小时10次,所以每5分钟约1次)。
如果成员数量的增加逐渐减慢,那么可以归结为确保所有成员都收到邮件的时间窗口。
替代方案,使用像Ogun建议的消息代理。
答案 2 :(得分:0)
如何通过curl异步运行它。 这样,虽然您循环了6000个成员,但由于长时间执行,您的文件将不会获得超时响应。
function send($params) {
foreach($params as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://localhost/anotherfiletosendemail.php');
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch,CURLOPT_POST,count($params));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_exec($ch);
curl_close($ch);
}