Php 写入xml文件时允许的内存大小为67108864字节(尝试分配4459414字节)
可能重复:Php 写入xml文件时允许的内存大小为67108864字节(尝试分配4459414字节),php,xml,Php,Xml,可能重复: 我在这里也看到过类似的问题,但我的问题完全不同。我正在从数据库中读取数据并写入xml文件。我得到这个错误 <b>Fatal error</b>: Allowed memory size of 67108864 bytes exhausted (tried to allocate 4459414 bytes) in <b>.../public/home/..</b> on line <b>32</b><b
我在这里也看到过类似的问题,但我的问题完全不同。我正在从数据库中读取数据并写入xml文件。我得到这个错误
<b>Fatal error</b>: Allowed memory size of 67108864 bytes exhausted (tried to allocate 4459414 bytes) in <b>.../public/home/..</b> on line <b>32</b><br />.
致命错误:在…/public/home/中,允许的内存大小为67108864字节(尝试分配4459414字节)。。第32行
。
解决方案应该是什么?我是否增加代码中的内存大小?有什么帮助吗?做一个
mysql\u无缓冲查询()
而不是mysql\u查询()
。您的查询返回的数据可能太多,php服务器无法处理。请尝试在php.ini
中增加或删除内存限制
找到类似的内容并更改内存限制的值
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M
(这是我的php.ini的一部分)
保存更改后重新启动服务器
此外,您还可以尝试从代码中删除限制
例如:
ini_set('memory_limit', '-1');
这应该行得通
另一种方法是通过添加以下行从.htaccess文件设置内存限制:
php_值内存_限制128M
(128M只是一个例子)
注意:对于共享主机,我非常怀疑您是否可以更改内存限制。增加内存是一种解决方案(直到您下次遇到相同的问题时遇到),或者尝试确定您的脚本首先使用如此多内存的原因。。。您使用什么来编写xml?您是否正在将所有数据库检索到的行加载到一个数组中?请指出您的问题不同的原因。该错误的原因和解决方案通常是相同的:您的脚本由于某种原因耗尽了内存。您可以修复脚本以消耗更少的内存,也可以增加内存限制。另请参阅@karto-在这种情况下,如果可以,请在每次获取行时写入xml以减少内存。。。否则,整个阵列都将处于memory@MarkBaker:尝试了@PVM建议的mysql\u unbuffered\u query(),效果很好。请解释一下mysql\u unbuffered\u query()的情况mysql\u unbuffered\u query()一次只能从数据库的结果集中获取一条记录,因此,php只需将少得多的数据存储到内存中。mysql_query()将整个结果集提取到内存中。文档位于:+1
ini_集('memory_limit','-1')代码>快速和肮脏,但工作!;)