2016-07-29 14 views
0

私はちょうど私のウェブサイトを開発していますが、私はエラーを得たがPHP予期しないメモリ使用量

"Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4294967296 bytes) in...".

奇妙なことは、それが正常に動作し、私のメモリ使用量は、私のコード内の1行まで右最大約500,000であるということです:

echo'<script>alert("'."X-".memory_get_usage(true).'");</script>'; 
$queryX = "SELECT `data`,`image`,`date` FROM messages WHERE toX = ? or fromX = ?"; 
echo'<script>alert("'."X2-".memory_get_usage(true).'");</script>'; 
$stmtX = $connection->prepare($queryX); 
echo'<script>alert("'."X3-".memory_get_usage(true).'");</script>'; 
$stmtX->bind_param('ss',$idlistX[$i],$idlistX[$i]); 
echo'<script>alert("'."X4-".memory_get_usage(true).'");</script>'; 
$stmtX->bind_result($dataT,$imageT,$dateT); 

私はそれを追跡するためのものアラートを持っています。その最後の行がどのように問題を引き起こしているか誰にも分かりますか?

答えて

2

blobカラムがあるとしますか?

4294967296は、メモリを同時に割り当てようとしていることを示しています。つまり、BLOB列の最大長です。

これはバグでもリークではなく、バインドステートメントから来る可能性があります。

blobカラムがある場合は、select文でvarcharにキャストしてみてください。

+0

はい、画像1はブロブですが、現在は空です。それをどうやって修正するのですか? –

+1

まず、画像をブロブとしてデータベースに保存しないでください。パスをデータベースのイメージに保存し、イメージをハードドライブに保存します。それはあなたの問題を解決するはずです。 – Andrew

+0

私は知っていますが、これはユーザーがお互いに送信する画像なので、私はそれらを非公開にします –