php跟踪函数执行时间

php跟踪函数执行时间,php,optimization,performance,Php,Optimization,Performance,我已经开发了一段时间的php框架,并在10多个拥有我们自己的CMS的站点上使用它 现在已经到了相当复杂的地步,某些类/函数的延迟似乎越来越大 我想试着找出最大的延误发生在哪里,但不确定我会怎么做 我尝试过安装xdebug,但它不起作用,我甚至不知道它会如何使用 有人知道我如何跟踪对类和函数的调用,甚至计时吗 感谢您的帮助,丹。您想尝试找出最大的延误发生在哪里,并且不确定如何处理 每个人的第一本能都是开始测量方法使用的时间,计算它们被调用的次数,并逐步缩小范围,并利用直觉对可以修复的问题做出明智的

我已经开发了一段时间的php框架,并在10多个拥有我们自己的CMS的站点上使用它

现在已经到了相当复杂的地步,某些类/函数的延迟似乎越来越大

我想试着找出最大的延误发生在哪里,但不确定我会怎么做

我尝试过安装xdebug,但它不起作用,我甚至不知道它会如何使用

有人知道我如何跟踪对类和函数的调用,甚至计时吗


感谢您的帮助,丹。

您想尝试找出最大的延误发生在哪里,并且不确定如何处理

每个人的第一本能都是开始测量方法使用的时间,计算它们被调用的次数,并逐步缩小范围,并利用直觉对可以修复的问题做出明智的猜测。然而,还有另一种思考方式,不是从时间的角度,而是从必要性的角度

程序遍历调用树。主例程调用A,然后调用B,依此类推。A调用C,然后调用D,等等,它沿着调用树一直走到叶子,叶子是简单的语句、系统调用和I/O。如果所有这些活动都必须执行,那么程序会尽可能快

由于存在延迟,其中一些活动并非绝对必要,而不必要的方式是,通往这些活动的一个分支机构(呼叫点)并非绝对必要

假设您的延迟花费了50%的时间。然后,这些调用点处于活动状态,并在调用堆栈上保留50%的时间。因此,如果您随机暂停程序并显示堆栈,您将看到它的概率为50%。如果你这样做10次,它会出现在其中的5次,或多或少

事实上,如果您这样做并检查堆栈,如果调用点仅出现在一个样本上,则它不会告诉您任何信息。但是,如果它出现在多个示例上,并且您可以避免这样做,那么您已经发现了延迟,修复它将使程序更快。更重要的是,几乎没有任何延迟可以避免这种审查


当一个程序变得更大、更复杂时,这些非严格必需的调用点就会像bug一样潜入。与bug不同,它们不要求您修复它们;它们只会减慢程序的运行速度,因此偶尔这样做是很好的。

您需要一个探查器,因此我建议您了解x-debugIt不起作用不是一个有效的问题描述。如果您不确定XDebug是如何工作的,或者将您的问题转化为一个适当的问题。在任何情况下,XDebug都是您的最佳选择。以下链接可能会有任何帮助吗?我读了这个问题,发现daniel正在寻找解决方案来避免使用合适的工具,所以我的建议是让x-debug工作并使用它。但他也可以使用zend debugger来分析代码。调试工具几乎构建在每个流行的IDE中(如zend、eclipse、phpstorm)。这就是为什么我加上这个作为一个评论,而不是一个答案