关于在php脚本中释放内存的问题

关于在php脚本中释放内存的问题,php,mysql,performance,memory,Php,Mysql,Performance,Memory,我只是在剧本里看到的 mysql_free_result($rawdb); 我在某个地方的脚本上看到了它,它运行了一个mysql查询,并将结果保存到一个数组中,在添加到数组之后,它运行了我认为空闲的内存,这是mysql查询使用的内存 我只是想验证一下,这样做好吗?我有几个mysql查询,它们返回一个保存到数组中的大结果,我应该在它之后运行该代码吗 此外,在注重性能的环境中,在完成大型会话和变量时取消设置它们是否是一种良好的做法?我不担心这一点。所有结果资源在脚本结束时都会被释放,除非您在使用大

我只是在剧本里看到的

mysql_free_result($rawdb);
我在某个地方的脚本上看到了它,它运行了一个mysql查询,并将结果保存到一个数组中,在添加到数组之后,它运行了我认为空闲的内存,这是mysql查询使用的内存

我只是想验证一下,这样做好吗?我有几个mysql查询,它们返回一个保存到数组中的大结果,我应该在它之后运行该代码吗


此外,在注重性能的环境中,在完成大型会话和变量时取消设置它们是否是一种良好的做法?

我不担心这一点。所有结果资源在脚本结束时都会被释放,除非您在使用大型结果集进行查询时遇到内存问题,否则差异可以忽略不计


也就是说,如果我正在阅读您的代码并看到mysql\u free\u result,我肯定您不会在代码的任何地方使用该资源,因此它可以增加一点可读性…

我不会担心它。所有结果资源在脚本结束时都会被释放,除非您在使用大型结果集进行查询时遇到内存问题,否则差异可以忽略不计

也就是说,如果我正在阅读您的代码并看到mysql\u free\u result,我肯定您不会在代码中的任何地方使用该资源,因此它可以增加一点可读性…

mysql\u free\u result()
只需 如果您关心如何使用,请致电 大量内存用于查询 返回大的结果集。全部的 关联结果内存为 在任务结束时自动释放 脚本的执行

从:

mysql\u free\u result()
只需 如果您关心如何使用,请致电 大量内存用于查询 返回大的结果集。全部的 关联结果内存为 在任务结束时自动释放 脚本的执行


函数的PHP手册页面回答了您的大多数问题:


函数的PHP手册页面回答了您的大多数问题:


对此有一些讨论。根据您的用例(即您正在检索的结果的大小),
mysql\u free\u result()
可能会提高或降低性能。正如该链接底部的评论者所说,调用
memory\u get\u usage()
了解是否应该释放结果。没有什么比实际检查资源使用情况更好的了。

对此有一些讨论。根据您的用例(即您正在检索的结果的大小),
mysql\u free\u result()
可能会提高或降低性能。正如该链接底部的评论者所说,调用
memory\u get\u usage()
了解是否应该释放结果。没有什么比实际检查资源使用情况更好的了。

我认为将其放入数据抽象层是一个很好的做法,因为它使它成为内存处理的好公民。尤其是许多PHP代码不是:-/


PHP4中的内存使用问题比PHP5中的要糟糕得多,但它仍然可能是一个问题。如果您必须不断提高PHP脚本允许的最大内存(默认值为8Mb,但我使用的大多数环境的最大内存为64Mb),那么您可能应该考虑脚本是如何使用和过度使用内存的。使用
mysql\u free\u result()
是这个软件库中的一部分,但它本身是毫无意义的。如果使用
mysql\u unbuffered\u query()
并在使用
mysql\u fetch()
检索每一行时对其进行处理,则可以更高效地处理大型数据集。我已经看到,使用这种方法重新编写脚本时,脚本处理数据的能力大大提高。

我认为将其放入数据抽象层是一种很好的做法,因为它使它成为内存处理的好公民。尤其是许多PHP代码不是:-/

PHP4中的内存使用问题比PHP5中的要糟糕得多,但它仍然可能是一个问题。如果您必须不断提高PHP脚本允许的最大内存(默认值为8Mb,但我使用的大多数环境的最大内存为64Mb),那么您可能应该考虑脚本是如何使用和过度使用内存的。使用
mysql\u free\u result()
是这个软件库中的一部分,但它本身是毫无意义的。如果使用
mysql\u unbuffered\u query()
并在使用
mysql\u fetch()
检索每一行时对其进行处理,则可以更高效地处理大型数据集。我已经看到,当使用这种方法重新编写脚本时,脚本处理数据的能力大大提高

也是在注重表现的情况下 保护环境是一种良好的做法吗 取消设置大型会话和变量 他们什么时候结束的

请注意,如果您从
$\u会话
中取消设置变量,您将有效地从会话中删除它们:下次用户调用网站页面时,这些变量将不存在

因此,您可能需要小心这个想法:只在不再需要数据时从
$\u会话
中删除数据

关于
unset
ting数据和/或使用类似
mysql\u free\u result
的函数:考虑到您的脚本(我想,就像PHP用于web开发一样,用户不会等待数小时来加载页面)只运行几百毫秒,用这种方式释放内存可能有点过头了:只要你没有得到与
内存限制
相关的错误,你可能不应该在意

也是在注重表现的情况下 保护环境是一种良好的做法吗 取消设置大型会话和变量 他们什么时候结束的

请注意,如果您从
$\u会话
中取消设置变量,您将有效地从se中删除它们