PHP不释放内存

PHP不释放内存,php,memory,Php,Memory,我的生产环境中的php脚本出现问题 我的脚本的目的是读取XML文件,解析它并生成新的XML记录以插入SOLR。 XML包含许多文档,我在这些文档上循环 自上次发布以来,由于内存错误,脚本崩溃。 我用get_memory_usage()记录循环开始时使用的内存,我发现它会定期增长 我不使用静态变量,所有变量都在循环中重新分配。当我读到连接可能会导致内存问题时,我使用了一个数组并在循环后内爆 实际上,我的主要问题是使用的内存在我的测试环境和开发环境中保持稳定。脚本完全相同,配置与(使用puppet部

我的生产环境中的php脚本出现问题

我的脚本的目的是读取XML文件,解析它并生成新的XML记录以插入SOLR。 XML包含许多文档,我在这些文档上循环

自上次发布以来,由于内存错误,脚本崩溃。 我用get_memory_usage()记录循环开始时使用的内存,我发现它会定期增长

我不使用静态变量,所有变量都在循环中重新分配。当我读到连接可能会导致内存问题时,我使用了一个数组并在循环后内爆

实际上,我的主要问题是使用的内存在我的测试环境和开发环境中保持稳定。脚本完全相同,配置与(使用puppet部署)相同。只有硬件不同(不同云上的VM)。 当然,输入文件与之相同

您知道是什么原因导致我的环境之间存在这种差异吗?
所有有助于被接受的建议,都在这方面做了大量研究

,但对PHP及其内存处理知之甚少,如果您可以随时检查内存使用情况,您可以尝试在每一行代码之后运行它,例如,查看与测试/开发环境相比,您的代码的哪一部分实际生成了垃圾,并可能获得一些线索。除此之外,如果不知道它在哪个硬件上工作,或者不知道它在哪个硬件上工作,就很难判断出什么是错的。实际上,没有一个函数可以计算所有内存的总和,内存似乎永远不会被释放。你知道哪些系统参数会影响这种行为吗?我快速地在谷歌上搜索了一下,得出了这样一个结论:如果你知道服务器运行的哪些硬件会占用你的内存,也许可以在搜索中包含这些硬件,看看是否有其他人也有类似的问题。我看到了这一点,但我在部署了puppet的两个Linux虚拟机上运行了我的脚本。只有物理硬件不同。我的两个环境之间的行为有很大的不同,一个在循环中释放内存,另一个从不释放。在不了解PHP及其内存处理的情况下,如果您可以随时检查内存使用情况,您可以尝试在每一行代码之后运行它,例如,查看与测试/开发环境相比,您的代码的哪一部分实际生成了垃圾,并可能获得一些线索。除此之外,如果不知道它在哪个硬件上工作,或者不知道它在哪个硬件上工作,就很难判断出什么是错的。实际上,没有一个函数可以计算所有内存的总和,内存似乎永远不会被释放。你知道哪些系统参数会影响这种行为吗?我快速地在谷歌上搜索了一下,得出了这样一个结论:如果你知道服务器运行的哪些硬件会占用你的内存,也许可以在搜索中包含这些硬件,看看是否有其他人也有类似的问题。我看到了这一点,但我在部署了puppet的两个Linux虚拟机上运行了我的脚本。只有物理硬件不同。我的两个环境之间的行为根本不同,一个释放内存,迭代循环,另一个从不释放内存。