在mod_php中调试内存使用

在mod_php中调试内存使用,php,apache,memory,Php,Apache,Memory,我有一个在apache/mod_php中运行的请求处理程序,它偶尔会超出允许的最大内存使用量(即php.ini中的内存限制定义) 处理此请求将调用proc_open()来运行外部命令。这些命令的内存使用情况是否与请求内存使用情况“对比”计算 除此之外,分析和修复在mod_php下运行的脚本的内存使用情况的首选方法是什么?我在php内存使用方面找到的所有信息似乎都是: “编辑php.ini并提高内存限制!” “编辑apache配置并将每个子级的最大请求数设置为较低的数字!” 显然,这两种情况都

我有一个在apache/mod_php中运行的请求处理程序,它偶尔会超出允许的最大内存使用量(即php.ini中的内存限制定义)

处理此请求将调用proc_open()来运行外部命令。这些命令的内存使用情况是否与请求内存使用情况“对比”计算

除此之外,分析和修复在mod_php下运行的脚本的内存使用情况的首选方法是什么?我在php内存使用方面找到的所有信息似乎都是:

  • “编辑php.ini并提高内存限制!”
  • “编辑apache配置并将每个子级的最大请求数设置为较低的数字!”
显然,这两种情况都会对性能和稳定性产生负面影响。我怎样才能真正分析和解决问题,而不是创可贴呢? Apache将错误记录为:

PHP致命错误:允许的内存大小 已耗尽的X字节数(已尝试 在Z行的foo.php中分配Y字节


我问了一个关于PHP内存管理的类似问题:

我相当肯定,从exec()或proc_open()运行外部程序不会违反php的内存限制

在PHP中跟踪内存使用情况显然非常困难。似乎没有办法查找符号表或类似的内容

PHP有两个内存管理函数,如和,可以获取脚本中任何给定点使用的内存总量。您可以编写自己的跟踪脚本,并将其临时放置在关键点以查找内存占用者

根据代码堆栈的大小,xdebug可能是您的最佳选择。但是,如果你有很多代码,这可能会有点过头