将邮件发送给用户并执行代码直到Location标头需要一些时间。我想在另一个线程中运行邮件发送代码,因此找不到或加载该特定页面不会花费时间。
$sql = "SELECT email FROM user_info where username = ?";
$statement = $db->prepare($sql);
$statement->bindParam(1, $cmtTo);
$statement->execute();
$row = $statement->fetch();
// echo $row['email'];
$mailSender = new PuzzleEmailSender();
$body = "<html>
<body>
<h2 style=\"font-weight:bold;font-size:24px;font-family:Helvetica,Arial,sans-serif;line-height:26px;color:#999;margin:0\"><img class=\"navbarimg\" src=\"" alt=\"/></h2><br>
<div style=\"font:normal 14px Helvetica,Arial,sans-serif;line-height:19px;color:#333\">
<p>Hi, <strong>" . $cmtTo . "</strong> </p>
<p><strong>" . $cmtBy . "</strong> expressed comment on your puzzle answer</strong></p>
<p><a style=\"text-decoration:underline;color:#00aff0;font-weight:bold\" href='" "' target=\"_blank\">Click on the link to check</a></p>
<p>Team,</p>
<p style=\"font-weight:bold;font-size:15px;line-height:24px;font-family:Arial,Helvetica,sans-serif;color:#666;margin:0\">
" "</p></div>
</div>
</body>
</html>";
$subject = "Comment On Your Answer";
$mailSender->sendQueryEmail($row['email'], "", $body, $subject, "", false);
header("Location: puzzleDisplay");
答案 0 :(得分:1)
创建表格: mail_queue
字段: ID,电子邮件,主题,正文
变化:
<input type="text" class="form-control" id="FNAME" name="FNAME" value="<?php echo set_value('FNAME'); ?>">
到
$mailSender->sendQueryEmail($row['email'], "", $body, $subject, "", false);
创建脚本: mail_queue.php ,它将执行获取所有电子邮件并发送邮件然后在发送后删除记录
放到crontab: * * * * * php mail_queue.php
答案 1 :(得分:0)
您可以在后台发送邮件。将邮件任务添加到某个队列,然后队列将不时执行。
这些可以通过多种方式实现:
您可以使用持久存储队列。就像你将邮件存储到 D B。然后来自cron的脚本将检查未发送的邮件并发送一个 一个人。
您可以使用gearman-job-server
。将您的邮件排入作业服务器
从你的主脚本。然后编写用于在gearman worker
脚本中发送电子邮件的代码。
您可以使用托管队列服务解决方案,例如:iron.io
。 Laravel
队列使用铁api。