首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中将大量的任务分成小的任务并在特定的时间间隔内执行

问如何在php中将大量的任务分成小的任务并在特定的时间间隔内执行
EN

Stack Overflow用户
提问于 2013-02-22 01:18:37
回答 3查看 154关注 0票数 0

我需要发送一个普通邮件给大量的会员(例如5000名会员)。

我需要发送这个使用SMTP服务器。

我将从数据库中获得这5000名会员的邮件id。

新成员将在每小时添加到数据库表中,

例如

1小时后,会员人数将达到6000人

那么,通过划分任务,向所有这些成员发送邮件的最佳方法是什么?

EN

回答 3

Stack Overflow用户

发布于 2013-02-22 01:27:02

您需要一个消息代理。http://www.rabbitmq.com/或http://www.zeromq.org/将帮助您。

票数 0
EN

Stack Overflow用户

发布于 2013-02-22 01:34:54

您可以创建一种方法来跟踪已发送邮件的成员(例如,数据库表上的布尔值),创建一个向X个人发送邮件的脚本,并将cron配置为每隔Y次执行此脚本。

如果成员数量的增长速度没有减慢,并且符合您的示例,您将需要配置脚本和cron以每小时输出1000条以上的消息(例如,如果脚本发送100条消息,则它应该每小时运行10次以上,因此大约每5分钟运行1次)。

如果会员数量的增长逐渐放缓,那么就会归结为你必须在多长的时间内确保所有会员都收到了邮件。

另一种选择是使用消息代理,就像Ogun建议的那样。

票数 0
EN

Stack Overflow用户

发布于 2013-02-22 01:50:14

使用curl通过异步方式运行它怎么样?这样,尽管你循环了6000个成员,你的文件不会因为长时间的执行而得到超时响应。

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15008398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档