PHP'的可靠性如何;s内存是否达到峰值使用率?

PHP'的可靠性如何;s内存是否达到峰值使用率?,php,Php,我一直在对我编写的一个PHP类进行基准测试。它遍历一个MySQL表,因此您可以通过发送一个唯一的ID来获取给定查询的下一条和上一条记录。该类允许您通过两种方式来实现这一点: 将整个结果集加载到一个PHP变量中,并通过使用PHP循环数组来获取prev/next记录 执行两个MySQL查询,只需将上一个/下一个记录ID发送回PHP 我已经建立了一个大约有1000000条记录的测试表;表大小约为25 MB 考虑到这一点,我希望方法1比方法2占用更多的内存,因为整个结果集都加载到一个PHP变量中(尽管只

我一直在对我编写的一个PHP类进行基准测试。它遍历一个MySQL表,因此您可以通过发送一个唯一的ID来获取给定查询的下一条和上一条记录。该类允许您通过两种方式来实现这一点:

  • 将整个结果集加载到一个PHP变量中,并通过使用PHP循环数组来获取prev/next记录

  • 执行两个MySQL查询,只需将上一个/下一个记录ID发送回PHP

  • 我已经建立了一个大约有1000000条记录的测试表;表大小约为25 MB

    考虑到这一点,我希望方法1比方法2占用更多的内存,因为整个结果集都加载到一个PHP变量中(尽管只有一列)。但是,当我调用memory\u get\u peak\u usage时,内存总是在0.5 MB左右。如果我将true作为参数传递,则两者都返回~0.75 MB。具有讽刺意味的是,方法2返回的内存使用率略高于方法1。根据表结构和大小,我猜方法1应该比方法2多使用大约10MB的内存,但它没有

    PHP的内存使用率有多可靠?PHP的内存管理是否有一些聪明的特性,使其使用的内存比您想象的要少得多


    谢谢。

    如果在一条select语句中检索所有记录(如果可能),而不处理返回的结果,返回值会发生什么变化?这应该会有一些影响,除非PHP只计算实际“进入PHP世界”的内容?嗨,你的意思是如果我做$result=$connection->query($query);但那就不要用$result做任何事情了?谢谢。是的,差不多吧。这肯定会占用一些内存,但我假设您不会看到它被客户端使用(即在PHP中)。您的查询是缓冲的还是非缓冲的?缓冲查询将把结果集加载到PHP内存中,而不管您做什么,它们是默认的。用无缓冲查询再试一次,让我们听听结果。