如何将大量任务划分为小任务并在特定时间间隔内执行,在php
问题描述:
我需要将大量的任务发送给大量成员(例如5000个成员)。如何将大量任务划分为小任务并在特定时间间隔内执行,在php
我需要发送这个使用SMTP服务器。
我会从数据库中获得这5000个成员的邮件ID。
新成员将添加到数据基本表中的每个小时,
例如
在1小时后,部件的数量将达到6000
所以这是最好的方法,以通过分任务发送邮件给所有这些成员
答
您可以创建一种方法来跟踪已发送邮件的成员(例如,数据库表上的布尔值),创建一个向X人发送邮件的脚本,并配置一个cron以每Y次执行一次该脚本。
如果成员数量的增加没有减慢并且与您的示例相匹配,您需要配置脚本和cron以在一小时内输出超过1000条消息(例如,如果脚本发送100条消息,它应该运行更多每小时10次以上,每5分钟约1次)。
如果成员数量的增加会逐渐减慢,那么您需要确保所有成员都收到邮件的时间窗口有多大。
或者,使用Ogun建议的消息代理。
+0
感谢您的详细回复。 让我知道'壳'在这方面有任何相关性 – Linto 2013-02-21 19:29:58
答
如何通过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);
}
任何特殊的原因选择?添加两者的简短摘要将改善您的答案。请注意,仅链接的答案通常会被忽视。 – 2013-02-21 17:48:53
你是对的,但我只是希望他有消息经纪人的通知。我不是消息代理教程。 – 2013-02-21 18:46:14