を使い果たし、私は私のログファイルにメモリ疲れエラーPHPの致命的なエラー:268435456バイトの許可メモリサイズが
PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted
を見続けます。
このエラーは、サーバーが非常に軽くローカルホスト上で再現できない&ロードされた場合でも、ランダムに付属しています。私はMBの負荷とhostgatorからVPS 4サーバーを持っています。 PHPの設定は最大256 Mbを可能にします。表tbl_bid 2800件のレコードを有する
function func_select_array($qry)
{
$i=0;
$data=array();
$qry_result=mysql_query($qry);
if($qry_result)
{
while ($row=mysql_fetch_assoc($qry_result))
{
$data[$i] = $row;
$i++;
}
return $data;
}
else
{
return 2;
}
}
function func_check_rule_out_bid($auc_id,$bid_amount,$return_freq,$recheck)
{
$bid_qry="select * from tbl_bid where ubaid='".$auc_id."' and ubf='1' order by uba desc limit 0,10";
$bid_array=func_select_array($bid_qry);
}
の下
コードです。 func_select_array関数のwhileループでメモリが使い果たされました。 このクエリに256M +が必要であるとは思いません。それはPHPの問題ではないようですが、mysqlの中にあるものです。
どのラインで正確にエラーが表示されますか。そして、PHPに関連していることを確かめてください。mysqlではありません。 mysqlの場合、サーバは結果を返しません。しかし、適切なクエリを送信するかどうかを確認する必要があります。 – hakre
2800レコードはおそらく問題ありません。各レコードのサイズは?彼らは 'BLOB'を含んでいますか? –
ビジネスの最初の順序は、エラーを再作成することです。それに失敗すると、すべてを記録する。可能であれば、mysql_num_rows()、memory_get_peak_usage()などの結果をメモリに残す前にログに記録します。次に、それが次回発生したときに、繰り返し実行しようとしたクエリとレコードの数を確認できます。通常は期待しないことがあるかもしれません。 –