我需要发送一个普通邮件给大量的会员(例如5000名会员)。
我需要发送这个使用SMTP服务器。
我将从数据库中获得这5000名会员的邮件id。
新成员将在每小时添加到数据库表中,
例如
1小时后,会员人数将达到6000人
那么,通过划分任务,向所有这些成员发送邮件的最佳方法是什么?
发布于 2013-02-22 01:27:02
您需要一个消息代理。http://www.rabbitmq.com/或http://www.zeromq.org/将帮助您。
发布于 2013-02-22 01:34:54
您可以创建一种方法来跟踪已发送邮件的成员(例如,数据库表上的布尔值),创建一个向X个人发送邮件的脚本,并将cron配置为每隔Y次执行此脚本。
如果成员数量的增长速度没有减慢,并且符合您的示例,您将需要配置脚本和cron以每小时输出1000条以上的消息(例如,如果脚本发送100条消息,则它应该每小时运行10次以上,因此大约每5分钟运行1次)。
如果会员数量的增长逐渐放缓,那么就会归结为你必须在多长的时间内确保所有会员都收到了邮件。
另一种选择是使用消息代理,就像Ogun建议的那样。
发布于 2013-02-22 01:50:14
使用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);
}https://stackoverflow.com/questions/15008398
复制相似问题