2016-07-29 17 views
0

Ich bin gerade meine Website zu entwickeln, aber ich habe einen FehlerPHP unerwartete Speichernutzung

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

Das Seltsame ist, dass es funktioniert gut und meine Speichernutzung ist etwa 500.000 bis, bis eine einzige Zeile in meinem Code :

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); 

Ich habe diese Warnungen, um es zu verfolgen. Weiß jemand, wie diese letzte Zeile Ärger verursacht?

Antwort

2

Haben Sie zufällig eine Blob-Spalte?

4294967296 zeigt an, dass Sie versuchen, zugewiesenen Speicher zufällig oder nicht, das ist die maximale Länge einer BLOB-Spalte.

Es kann genauso gut, aber ein Fehler, und kein Leck, und es könnte aus den Bind-Anweisungen kommen.

Wenn Sie eine BLOB-Spalte haben, versuchen Sie, sie in Ihrer SELECT-Anweisung in varchar umzuwandeln.

+0

Ja, das Bild ist ein Blob, aber für jetzt leer. Wie repariere ich das dann? –

+1

Erstens, speichern Sie keine Bilder in der Datenbank als Blobs. Speichern Sie den Pfad zum Bild in der Datenbank und speichern Sie das Image selbst auf der Festplatte. Das sollte dein Problem beheben. – Andrew

+0

Ich weiß, aber das sind Bilder, die Benutzer einander schicken, also will ich sie privat –