大佬教程收集整理的这篇文章主要介绍了php – 允许的内存大小为134217728字节耗尽(尝试分配4294967296字节),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
但该项目年中报告:“致命错误:允许内存大小为134217728字节耗尽(试图分配4294967296字节)在/ home1 / flipalbu / public_html / kvisofttest / login-admin / Lib / class.MysqliDb.php第422行“这个错误,
我的服务器是:linux x86_64
php版本5.4.17
@H_876_2@mysql版本:5.5.32 @H_876_2@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-> store_result(),你可以使用mysqli和longblob / longtext而不会收到错误.
–
旧答案:
我建议您将列更改为另一种类型(MEDIUMTEXT)或使用PDO(我认为它没有这个问题).但是如果你想把列保留为longtext,你必须切换你的mysql库
引自php Dev:
以上是大佬教程为你收集整理的php – 允许的内存大小为134217728字节耗尽(尝试分配4294967296字节)全部内容,希望文章能够帮你解决php – 允许的内存大小为134217728字节耗尽(尝试分配4294967296字节)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。