-1
运行此cron作业时,我不断收到以下错误。它运行,每分钟:mysql太多连接警告
错误
<br />
<b>Warning</b>: mysqli_connect(): (08004/1040): Too many connections in <b>/home/eterna33/public_html/script/email_cron.php</b> on line <b>2</b><br />
<br />
<b>Warning</b>: mysqli_query() expects parameter 1 to be mysqli, boolean given in <b>/home/eterna33/public_html/script/email_cron.php</b> on line <b>6</b><br />
<br />
<b>Warning</b>: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in <b>/home/eterna33/public_html/script/email_cron.php</b> on line <b>8</b><br />
<br />
<b>Warning</b>: mysqli_close() expects parameter 1 to be mysqli, boolean given in <b>/home/eterna33/public_html/script/email_cron.php</b> on line <b>19</b><br />
下面是在cron作业每分钟运行的代码。
<?php
$con=mysqli_connect("localhost","**","****","***");
$result = mysqli_query($con, "SELECT * FROM mail WHERE status=false");
$count="0";
while($row = mysqli_fetch_array($result)) {
$count++;
mysqli_query($con, "UPDATE mail SET status=true WHERE id='$row[id]'");
mail($row['send_to'], $row['subject'], $row['message'], $row['headers']);
mysqli_query($con, "DELETE FROM mail WHERE status=true AND id='$row[id]'");
if ($count >= 3) {
echo "exit";
mysqli_close($con);
exit;
}
}
mysqli_close($con);
?>
我已经联系了主机,但他们说他们“没有受过培训”来调试代码。我因为错在哪里而不知所措。代码正常工作,它只是给出了这些错误。
该错误表示MySQL服务器的活动连接太多。无论您的主机需要增加连接数量,还是需要新的主机。 – Machavity 2014-09-10 17:58:45
那么你的托管公司的员工“无能”,我希望你不是“为此付出太多的钱”。我的建议是在你的代码上放一个计时器,因为它可能需要一分多钟才能完成,然后你将脚本的副本堆积起来,直到你用完MySQL连接。哪个问题更好,而不是耗尽内存或CPU资源。 – Sammitch 2014-09-10 18:01:09
利用持久连接。 http://php.net/manual/en/mysqli.configuration.php#ini.mysqli.allow-persistent – 2014-09-10 18:01:44