b2evolutionのspam排除機能でエラー
著者: momokuri
b2evolutionでspam排除機能のblacklist管理のところで、エラーになる。
Fatal error: Allowed memory size of nn bytes exhausted (tried to allocate n bytes) in ほにゃらら
こういうときは、phpの設定を変更する、以下のようなのを入れておくと
いいかもしれない。
/* Uncomment this line to attempt to use a higher memory limit */
ini_set("memory_limit", "12M");
でも、根本的にプログラムに問題がある、と考えた方がいい。メモリをそんなに使うのは、どうしてか。今回の場合は、すごく大きなblacklistのデータをSQLでカウントしているので、そこが怪しい。
この記事へのトラックバック アドレス
トラックバック URL (右をクリックし、ショートカット/リンクをコピーして下さい)
1 コメント
if( ! $disp_blacklist && (count($res_stats) > 100) )
というコードがあり、$res_statsをもってくるときがDBMSにはいっているすべてのantispamレコードを引っ張ってくる。
それが、
list_antiSpam()という関数だ。現状、このサイトでもスパムドメインやキーワードは数千のレコードになっており、これがメモリを圧迫してしまっている。
ブラックリストの全表示をすることは、すでに現実的ではないので、上記のように百以上のときは表示しないようにしてあるが、今のコードではDBからはとってきてしまう。
この$res_statsに入れるという処理方法は望ましくない。
2006/07/13 @ 19:38
2006/07/13 14:00:40,