脚本宝典收集整理的这篇文章主要介绍了php – 允许的内存大小为134217728字节耗尽(尝试分配4294967296字节),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
但该项目年中报告:“致命错误:允许内存大小为134217728字节耗尽(试图分配4294967296字节)在/ home1 / flipalbu / public_htML / kvisofttest / login-admin / Lib / class.MysqLiDb.PHP第422行“这个错误,
我的服务器是:linux x86_64
PHP版本5.4.17
MysqL版本:5.5.32
memory_limIT = 128M
第422行:call_user_func_array(array($stmt,’bind_result’),$parameters);
$db = new MysqLiDb ('LocalHost','root','passwd','DB'); $wqdb = $db-> query ("SELECT * From db_table"); foreach ($wqdb as $row) { $con. = $row ['ID']; } echo $con;
有什么办法可以解决吗?
PRotected function _dynamicBindResults(MysqLi_stmt $stmt) { $parameters = array(); $results = array(); $Meta = $stmt->result_Metadata(); $row = array(); while ($field = $Meta->fetch_field()) { $row[$field->name] = null; $parameters[] = & $row[$field->name]; } call_user_func_array(array($stmt,'bind_result'),$parameters); while ($stmt->fetch()) { $x = array(); foreach ($row as $key => $val) { $x[$key] = $val; } array_push($results,$x); } return $results; }
你的问题似乎发生了,因为表格的列中有一个longblob或longtext.
longtext / longblob的最大长度为4294967295 [4GB],这就是MysqLi尝试为缓冲区分配内存以确保没有丢失的原因.我建议您使用Mediumtext(16777215 [16MB]最大长度),这应该足够通常.
更新:
因为这个答案已经看到一些活动我从Phil_1984添加了这个解决方案(见评论)
=>如果你使用$stmt-> @R_406_1413@_result(),你可以使用MysqLi和longblob / longtext而不会收到错误.
–
旧答案:
我建议您将列更改为另一种类型(mediumtext)或使用PDO(我认为它没有这个问题).但是如果你想把列保留为longtext,你必须切换你的MysqL库
引自PHP Dev:
以上是脚本宝典为你收集整理的php – 允许的内存大小为134217728字节耗尽(尝试分配4294967296字节)全部内容,希望文章能够帮你解决php – 允许的内存大小为134217728字节耗尽(尝试分配4294967296字节)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。