php - 我在 cron 作业中不断收到 HTTP 500 错误,同时它使用 ci3 中的电子邮件类在循环中发送电子邮件
问题描述
我有一个使用 CodeIgniter 3 电子邮件类向订阅者发送电子邮件的 cron 作业。我使用了主机提供的 smtp 邮件服务。cron 作业在运行 2-3 分钟并发送 453 封电子邮件后给出 HTTP 500 错误。我在发送 400 封电子邮件后使用了睡眠。服务器可以发送多少电子邮件没有限制请查看下面的代码。
<?php $sn=1;$emailCount=0;
$config = array(
'protocol' => 'smtp',
'smtp_host' => 'smtp.something.com',
'smtp_port' => 587,
'smtp_user' => 'something@some.com',
'smtp_pass' => 'somepass',
'mailtype' => 'html',
'charset' => 'utf-8',
'smtp_crypto' => 'tls'
);
$this->email->initialize($config);
log_message("info", "Email Cron job started");
foreach($member as $row){
$this->email->clear();
$this->email->set_mailtype("html");
$this->email->set_newline("\r\n");
$this->email->from('something@some.com','Sm');
$this->email->subject($title);
$this->email->set_header('Header1', 'MIME-Version: 2.5.6');
$this->email->to(trim($row->email_address));
ob_start();
?>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr><td height="15"> </td></tr>
<!-- many lines of code just html-->
<tr><td height="15"> </td></tr>
</tbody>
</table>
<?php
$message = ob_get_contents();
ob_clean();
ob_flush();
$this->email->message($message);
if($emailCount % 400 == 0 && $emailCount != 0)
{
sleep(15);
log_message("info", "Sleep.Emails Sent: ".$emailCount);
}
if($this->email->send())
{
$emailCount++;
}
else
{
log_message("info", "Error! Total Emails Sent: ".$emailCount);
}
$sn++;
}
log_message("info", "Total Emails Sent: ".$emailCount);
log_message("info", "Total Loop Ran: ".$sn);?>
尝试了 sleep() 但没有用。
解决方案
推荐阅读
- android - Send sensor data from Wear OS to laptop in realtime
- docker - 将 docker 映像部署到 Kubernetes Engine 时权限被拒绝
- php - Proxy Error - I don't think I am running a proxy
- java - 如何抑制特定的 Kotlinc/Javac 编译器警告?
- swift - 检测视频剪辑是否受复制保护
- sql - 加快 SSIS 中的表查询
- java - Java:获取存储在链接列表中的字符串的 char 索引元素
- python - 忽略 ssl 证书以便于安装 python
- c++ - Helgrind 和 atomic_flag
- ruby-on-rails - 用户必须存在于 Rails 5 中