PHP意外内存使用

PHP意外内存使用,php,memory,memory-management,Php,Memory,Memory Management,我只是开发我的网站,但我得到了一个错误 “致命错误:允许的内存大小134217728字节在…”中耗尽(尝试分配4294967296字节) 奇怪的是,它工作正常,我的内存使用量大约为500000,直到代码中的一行: echo'<script>alert("'."X-".memory_get_usage(true).'");</script>'; $queryX = "SELECT `data`,`image`,`date` FROM messages WHERE toX

我只是开发我的网站,但我得到了一个错误

“致命错误:允许的内存大小134217728字节在…”中耗尽(尝试分配4294967296字节)

奇怪的是,它工作正常,我的内存使用量大约为500000,直到代码中的一行:

 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);
echo'alert(“.”X-“.memory\u get\u usage(true)。”);
$queryX=“从toX=?或fromX=?”的消息中选择`data`、`image`、`date`”;
echo'alert(“.”X2-“.memory_get_usage(true)。”);
$stmtX=$connection->prepare($queryX);
echo'alert(“.”X3-“.memory_get_usage(true)。”);
$stmtX->bind_参数('ss',$idlistX[$i],$idlistX[$i]);
echo'alert(“.”X4-“.memory_get_usage(true)。”);
$stmtX->bind_result($dataT、$imageT、$dateT);

我有这些警报来跟踪它。有人知道最后一句话是怎么引起麻烦的吗

您是否碰巧有一个blob列

4294967296表示您正在尝试分配内存,不管是否巧合,这是blob列的最大长度

它也可能只是一个bug,而不是泄漏,它可能来自bind语句


如果您确实有一个blob列,请尝试在select语句中将其强制转换为varchar。

您是否碰巧有一个blob列

4294967296表示您正在尝试分配内存,不管是否巧合,这是blob列的最大长度

它也可能只是一个bug,而不是泄漏,它可能来自bind语句


如果确实有blob列,请尝试在select语句中将其强制转换为varchar。

是的,图像列是blob,但暂时为空。那么我该如何解决这个问题呢?首先,不要将图像作为blob存储在数据库中。将图像的路径存储在数据库中,并将图像本身存储在硬盘上。这应该可以解决你的问题。我知道,但这些是用户互相发送的图像,所以我希望它们是私有的。将它们存储在数据库中或存储在硬盘驱动器上不会对隐私造成太大影响。可以说,它们在硬盘上更安全,因为我们在这里假设可以比操作系统更容易访问数据库。既然他可以访问操作系统,一些图像就不必担心了。等等,(谢谢你的帮助)我不明白,一个不打算直接访问数据库的用户怎么能在这里访问它(我想要一个scure数据库)?我该如何更改blob来防止这个错误呢?是的,映像一是一个blob,但现在是空的。那么我该如何解决这个问题呢?首先,不要将图像作为blob存储在数据库中。将图像的路径存储在数据库中,并将图像本身存储在硬盘上。这应该可以解决你的问题。我知道,但这些是用户互相发送的图像,所以我希望它们是私有的。将它们存储在数据库中或存储在硬盘驱动器上不会对隐私造成太大影响。可以说,它们在硬盘上更安全,因为我们在这里假设可以比操作系统更容易访问数据库。既然他可以访问操作系统,一些图像就不必担心了。等等,(谢谢你的帮助)我不明白,一个不打算直接访问数据库的用户怎么能在这里访问它(我想要一个scure数据库)?我该如何改变blob来防止这个错误呢?