我正在将大型 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 使用的变量,可以帮助我找出哪些变量正在占用这些大量内存?