2016-07-29 52 views
0

我只是在開發自己的網站,但我得到了一個錯誤PHP意外的內存使用情況

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

奇怪的是,它工作正常,我的內存使用量是大約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

是的,圖像是一個blob,但現在是空的。那我該如何解決? –

+1

首先,不要將圖像作爲斑點存儲在數據庫中。將圖像的路徑存儲在數據庫中,並將圖像本身存儲在硬盤上。這應該能解決你的問題。 – Andrew

+0

我知道,但這些是用戶發送給對方的圖像,所以我希望他們私密 –