我刚在脚本里看到了这个
mysql_free_result($rawdb);我在某个脚本上看到过它,它运行mysql查询并将结果保存到数组中,在添加到数组后,它运行的内存应该是mysql查询使用的空闲内存。
我只是想确认一下,这样做是不是一个好主意?我有几个mysql查询,它们返回一个大的结果,并保存到一个数组中,我应该在它之后运行代码吗?
另外,在注重性能的环境中,在使用完大型会话和变量后取消设置它们是否是一种好的做法?
发布于 2009-08-02 23:29:34
发布于 2009-08-02 23:29:00
我不会担心的。所有结果资源都在脚本结束时被释放,除非您在使用大型结果集进行查询时遇到内存问题,否则这种差异可以忽略不计。
也就是说,如果我阅读您的代码并看到mysql_free_result,我肯定知道您不会在代码中的任何地方使用该资源,因此它可以增加一点可读性……
发布于 2009-08-03 00:05:04
我认为将数据抽象层放入数据抽象层是一个很好的实践,因为这会使它成为内存处理的好公民。特别是很多PHP代码都不是这样的。:-/
PHP 4中的内存使用问题要比5中严重得多,但这仍然是一个问题。如果您必须不断增加PHP脚本允许的最大内存(默认值为8Mb,但我使用的大多数环境都将其设置为64Mb),那么您可能应该考虑一下脚本是如何使用和过度使用内存的。使用mysql_free_result()是这个武器库中的一部分,但单独使用它是相当无意义的。如果使用mysql_unbuffered_query()并在使用mysql_fetch()检索时处理每一行,则可以高效地处理大型数据集。我已经看到,在使用这种方法重写脚本时,处理数据的能力会大大提高。
https://stackoverflow.com/questions/1220154
复制相似问题