如何获取 PHP 程序的堆栈转储


How to take a stack dump of a PHP program

一个大型的第三方PHP应用程序需要很长时间(几秒钟)来处理某个POST请求。我需要找出什么花了这么长时间。

在Java领域,获取一些线程转储通常(并非总是)会告诉您程序卡在哪里。我可以在 PHP 中做类似的事情吗?

在这种情况下,debug_backtrace()函数无济于事,因为我在 PHP 代码中没有放置debug_backtrace()调用的特定位置。相反,我希望 PHP 代码开始执行,然后在执行大约 2 秒后转储堆栈跟踪。

我建议您查看xdebug并进行正确的分析: http://www.xdebug.org/docs/profiler

您将能够生成应用程序中所有方法调用的转储,其中包括执行时间。然后,您可以使用KCacheGrind/WinCacheGrind加载和分析它们。