【发布时间】:2009-10-15 12:25:49
【问题描述】:
我正在将一个大型 Web 应用程序移植到一个共享的 Web 托管环境。 该应用程序是用 PHP 4 编写的。新环境具有 PHP 5.2。
由于某种原因,应用程序在 PHP 5.2 中运行时会泄漏大量内存。我可以使用 memory_get_usage() 从字面上观察内存使用情况,直到达到 64 MB 的限制(这在共享环境中非常慷慨,该站点过去在 PHP 4 上以 12 或 16 MB 运行)。
我怀疑这是 PHP 5 中发生变化的副作用,很可能是参数中对象引用的处理。但是,搜索导致泄漏的特定行为非常困难,因为应用程序非常复杂,并且部分编写得不是很好(是的,它是我的)。
由于应用程序安装在共享网络空间上,我无法使用经典的调试工具(据我所知)。我非常非常想避免在本地重新创建环境,因为我整天都在从事这个项目一段时间。
所以我的问题是:
有谁知道典型的 PHP4 => 5 个转换陷阱,尤其是在处理大量对象时,这可能是我泄漏的原因
有没有人知道某种独立于调试器的、仅脚本的“图形范围转储”工具,用于 PHP 使用的变量,可以帮助我找出哪些变量占用了这些巨大的内存?
【问题讨论】:
标签: php memory-leaks shared-hosting memory-dump