我有邮件sending.First的php脚本,我从数据库中获得所有记录,并发送每个客户的邮件。
function perform_task() {
// Record selection and ther stuff
$status = mail();
// update status
}
function mail() {
// $mail is smtp mail object
if ($mail->send()) {
return 1;
} else {
return 0;
}
}参见上面的邮件,我得到了所有的记录,对于每个记录,我调用perform_task ()函数来发送邮件,但是由于smtp详细服务器问题,我不能从邮件函数得到任何响应,5分钟后,我的脚本中断,给我致命的错误,并且我不能在to中更新状态。我想处理这个错误。我想在5 minute.If后中断邮件函数的执行。我从邮件函数得到任何响应,然后我想更新状态失败。
PHP中有没有超时函数?
发布于 2015-12-07 17:02:49
我在你的代码中看到了一些东西。
1.)例如,您应该将mail函数重命名为sendMail。当您使用与内部函数相同的名称时,这将非常令人困惑。
2.)如果你使用一个好的库,比如Swiftmailer,你会得到一个简短的回复,如果电子邮件已经发送或者你有一个错误,你可以检查这一点。普通的邮件功能也做同样的事情。
最后一件事是,当你发送大量电子邮件时,今天发送邮件是一件复杂的事情。你必须处理太多的事情,例如,你不能太快地把你的电子邮件发送给一个提供商,否则你就会被屏蔽。例如,如果你有很多电子邮件,你应该每50 - 100封电子邮件设置一个超时。因此,只需迭代超过100封电子邮件,然后等待几秒钟,然后再次发送。
否则你可能会遇到问题。您可以使用sleep在迭代之后等待。
例如,Swiftmailer具有限制发送的功能。在那里,您可以说系统应该在一次迭代中发送多少。
发布于 2015-12-07 17:01:44
看看这个:
$ptime=time(); //current time before sending mail
$interval=5; //interval in seconds
if(((time() - $ptime) <= $interval){
//execute code here...
perform_task();
}发布于 2015-12-07 17:23:44
通常,php脚本应该在2-3秒内完成它的工作--越少越好,否则就会被认为非常慢。较慢的程序应该在后台运行,例如由cron调度。你可以使用脚本,它每5分钟执行一次,工作时间为4:55。在后台执行的脚本通常没有执行时间限制,它们可以工作几个小时,但不应该。
另一种方法是-使用某种标志,这样当一个脚本副本正在运行时,另一个副本在执行时就会退出。并将脚本安排为每分钟执行一次。
此外,还应该设置邮件功能的超时,可能是30秒。如果它不能在30秒内投递电子邮件,那么它可能根本无法投递邮件。
对于大规模的电子邮件分发,最好通过API使用某种特定的服务。
另一种方法是只需5美元/月就可以获得VPS,并将其配置为适用于大规模电子邮件分发。在这种情况下,你将不得不为正确的设置支付一次费用,并为托管支付一点费用,可能需要更多的支持费用,所以你需要计算一下,哪个对你更好。
如果你想让你的电子邮件以一种正确的方式快速传递,这是最起码应该做的。
https://stackoverflow.com/questions/34129538
复制相似问题