我必须使用php codeigniter向多个收件人发送电子邮件。问题是它需要花费大量时间来发送邮件。我已在数据库中保存了电子邮件ID,以便稍后从后台发送电子邮件。
$baseUrl = BASE_URL;
$sendmailurl = $baseUrl."index.php/SendEmail";
exec("wget -qO- $sendmailurl &> /dev/null &");
sendEmail是我的控制器,它从数据库中读取数据并发送邮件。但是exec没有在后台执行,浏览器等待,直到所有的电子邮件都被发送到数据库中的所有地址。
答案 0 :(得分:0)
您可以触发事件以将电子邮件或帖子发送到webhook,以便在某处解决此电子邮件。
例如,如果您有专门的地方发送电子邮件,那么您可以这样做。
POST / HTTP/1.1
Host: emailer.example.org
Content-Type: application/json
{"email_address":"destination@server.com","subject":"Foobar", "body":"Email body"}
通过这种方式,您可以将电子邮件服务与您正在进行的操作分离。或者,您可以使用像Rabbit MQ这样的消息队列来触发电子邮件事件异步
答案 1 :(得分:0)
看起来你的命令格式不正确。这取自评论中的PHP manual page for exec(),似乎与平台无关。
<?php
function execInBackground($cmd) {
if (substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("start /B ". $cmd, "r"));
}
else {
exec($cmd . " > /dev/null &");
}
}
?>