2010-03-18 210 views

回答

3

通常你应该优化你的查询/执行(),例如不要使用SELECT * FROM或者任何ORM都会造成内存问题。

解决方法设置内存大小更高:

的ini_set( “memory_limit的”, “5M”);

5M将限制设置为5兆字节。 如果这不起作用,请尝试在php.ini中设置值。

干杯。

3

你在查询中使用“SELECT *”吗?如果是,并且您正在获取行的TON,则PHP没有足够的内存来分配给所有字段。

您可以通过增加PHP的内存限制:

ini_set('memory_limit', '32M'); 
1

没有更多的细节,很难以确保您的具体问题是什么;但是,当试图读取具有多条记录的查询结果时,这是很常见的。

PHP有一个memory_size_limit(在php.ini中设置),它设置PHP可用于处理脚本的内存量的最大值。如果您尝试阅读大量记录并说,将其存储在数组中,则PHP可能会耗尽内存。你可以做的一件事是增加内存大小限制,比如从2兆字节(2M)增加到32M。

正如其他人所提到的,如果您有权访问您的主机,您也可以使用ini_set('memory_limit', '32M')或类似软件。

但是,无论您是否允许编辑您的php.ini文件,您都应该寻找更有效的方式来检索和存储您的数据。考虑简化查询,限制查询结果,或者仅使用类似while ($row = $db->fetch_row)的内容来一次处理一个结果行。

0

如果您使用的PHP 5.3与mysqlnd,请注意“MySQL的”内存使用现在计为PHP的内存使用情况。之前,libmysql使用的内存不会计入memory_get_usage()

我们将很多重度查询改为使用unbuffered queries,这可以减少内存使用量。

相关问题