【发布时间】:2017-04-19 19:09:12
【问题描述】:
我有自己的 PHP 脚本来发送时事通讯。它工作得很好。最近,我的托管服务提供商向我指出了一个值得尊重的配额:30 封邮件/分钟。所以,在每次发送邮件之间,我插入sleep(2);。
由于该更改,在 5 分钟(300 秒)后,脚本停止并返回:
服务不可用
由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后再试。 此外,在尝试使用 ErrorDocument 处理请求时遇到 503 Service Unavailable 错误。
四个观察。
-
在我的脚本的开头,我放了这两行:
ignore_user_abort(true); set_time_limit(0);所以,问题不在于 max_execution_time 变量(我验证:它确实被修改了)。
脚本在
localhost上正常工作,其中 PHP ini 变量比我的 Web 主机上更受限制。所以,问题不在于memory_limit变量。我认为这可能是 Apache Timeout 变量限制 (300)。但我的主机提供商对此持怀疑态度...
服务器在 PHP 5.5 上运行。
这可能是什么原因造成的?
之前的脚本(它适用于 PHPMailer):
// all email addresses
while ($row = $result->fetch_array())
{
// ...
if ($mail->send())
{
echo "success : " . $row["mail"] . "<br/>";
}
else
{
echo "error : " . $row["mail"] . " - " . $mail->ErrorInfo . "<br/>";
}
}
之后:
// all email addresses
while ($row = $result->fetch_array())
{
...
if ($mail->send())
{
echo "success : " . $row["mail"] . "<br/>";
}
else
{
echo "error : " . $row["mail"] . " - " . $mail->ErrorInfo . "<br/>";
}
sleep(2);
}
【问题讨论】:
-
你能包括那个不工作的脚本吗...?我们还不是很灵。
-
我改进了您问题的格式,使其更易于阅读。请查看 help centre 中的 Stack Overflow 格式文档,以便您下次可以自己执行此操作。请注意,列表中的代码块需要为每个列表级别缩进四个空格,再加上四个空格来表示代码块。