我有自己的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);
}
答案 0 :(得分:0)
这可能是很多事情,甚至是文件权限。我会首先撤消您的更改,看看它是否再次运行。如果没有,那么你知道它不是导致问题的sleep()命令。如果是sleep命令,则问题可能与等待php响应时的超时有关。尝试睡眠时间为.1秒,只是为了测试它是否有效。