【发布时间】:2014-10-17 17:50:33
【问题描述】:
我们有一个监控数据库的脚本。在数据库中存储 JSON 数据以及 fromName 和 fromEmail。如果handledAt 时间戳为空,则仍需发送电子邮件。所以我们创建了一个 cronjob 来监控handledAt 列。如果为空,则应发送电子邮件。
我们的脚本运行良好,但速度有点慢。因此,我想知道我们是否以适当的方式这样做。
抓取所有需要发送的电子邮件
foreach($ResultSelectEmails AS $key => $value)
{
require_once '../library/Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_String();
$twig = new Twig_Environment($loader, array(
'cache' => '../tmp/cache/'
));
$Contents = $twig->render(stripslashes($Templ['templateHTML']), $EData);
$Subject = $twig->render(stripslashes($Templ['templateSubject']), $EData);
$WriteFile = fopen('logs/'.$PDFLogFile.'.html','w');
fwrite($WriteFile, $Contents);
fclose($WriteFile);
// Create the Transport
$transport = Swift_SmtpTransport::newInstance('mail.example.com', 25)
->setUsername('info@example.com')
->setPassword('examplePassword')
;
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance($Subject)
->setFrom(array($ResultSelectEmails[$key]['fromEmail'] => $ResultSelectEmails[$key]['fromName']))
->setTo(array($ResultSelectEmails[$key]['toEmail']))
->setBody($Contents, 'text/html', 'UTF-8')
;
if(isset($EmailAttachements))
{
foreach($EmailAttachements AS $key => $value)
$message->attach(Swift_Attachment::fromPath($value));
}
$result = $mailer->send($message);
}
在脚本中,我们为每封电子邮件创建单独的传输。有时邮件服务器会抛出错误。主要是无法登录。
我们可以提高脚本性能吗?
期待你的想法……
【问题讨论】:
标签: php twig swiftmailer