首页 / 知识
关于配置文件:配置PHP脚本的最简单方法
2023-04-12 19:42:00
Simplest way to profile a PHP script剖析PHP脚本的最简单方法是什么? 我喜欢在上面显示一些内容,这些内容可以显示所有函数调用的转储以及它们花费了多长时间,但我也可以在特定函数周围添加一些内容。 我尝试使用microtime函数进行实验:
但这有时给我负面的结果。 另外,在我的代码中撒满代码也很麻烦。 我想你想要xdebug。将其安装在服务器上,打开电源,通过kcachegrind(对于linux)或wincachegrind(对于Windows)泵送输出,它将为您显示一些漂亮的图表,详细说明了确切的时间,计数和内存使用情况(但您会为此需要另一个扩展)。 它摇晃,严重:D PECL APD扩展名的用法如下:
之后,使用 输出示例:
警告:APD的最新版本为2004年,该扩展不再维护,并存在各种兼容性问题(请参阅注释)。 无需扩展,只需使用这两个函数即可进行简单的性能分析。
这是一个示例,在每个检查点调用带有说明的prof_flag(),并在末尾调用prof_print():
输出看起来像这样: 开始0.004303连接到DB0.003518执行查询0.000308检索数据0.000009关闭DB0.000049完成 从离线发布的SO Documentation beta中交叉发布我的参考。 使用XDebug进行性能分析 PHP的扩展名Xdebug可用于帮助分析PHP应用程序以及运行时调试。运行探查器时,输出以称为" cachegrind"的二进制格式写入文件。每个平台上都有可用的应用程序来分析这些文件。无需更改应用程序代码即可执行此概要分析。
要启用分析,请安装扩展并调整php.ini设置。一些Linux发行版附带标准软件包(例如Ubuntu的
接下来,使用网络客户端向您要配置的应用程序的URL发出请求,例如
在页面处理过程中,它将以与以下名称相似的名称写入文件
默认情况下,文件名中的数字是编写它的进程ID。这可以通过 请注意,它将为每个执行的PHP请求/进程编写一个文件。因此,例如,如果您希望分析表单帖子,则将为GET请求编写一个配置文件以显示HTML表单。 XDEBUG_PROFILE参数将需要传递到后续的POST请求中,以分析处理表单的第二个请求。因此,在进行概要分析时,有时更容易运行curl直接将表单过帐。 分析输出 写入配置文件缓存后,可以由诸如KCachegrind或Webgrind的应用程序读取。流行的PHP IDE PHPStorm也可以显示此概要分析数据。
例如,KCachegrind将显示以下信息:
要找什么 显然,性能调整是针对每个应用程序的用例的。总的来说,寻找:
注意:Xdebug,尤其是它的概要分析功能,占用大量资源,并降低了PHP的执行速度。建议不要在生产服务器环境中运行它们。 老实说,我将争论使用NewRelic进行性能分析是最好的。 这是一个PHP扩展,似乎根本不会减慢运行时间,它们会为您进行监视,从而实现良好的向下钻取。在昂贵的版本中,它们允许大量下钻(但我们无法负担其定价模型)。 尽管如此,即使有了免费/标准计划,大多数悬而未决的果实也很明显而且很简单。我也喜欢它也可以给您关于数据库交互的想法。
如果减去微时间给您带来负面的结果,请尝试使用带有参数 PECL XHPROF看起来也很有趣。它具有可单击的HTML界面,用于查看报告和非常简单的文档。我还没有测试。 可怜的人的轮廓,不需要扩展。支持嵌套的配置文件和总数的百分比:
例:
产量:
我喜欢使用phpDebug进行性能分析。 它输出所有使用的SQL以及所有包含的文件的所有时间/内存使用情况。显然,它最适合抽象的代码。
对于函数和类分析,我将仅使用 我会挑衅地尝试BlackFire。 我已经使用puphpet整合了这个virtualBox,以测试与BlackFire配合使用的不同php框架,请根据需要随意进行分叉和/或分发:) https://github.com/webit4me/PHPFrameworks 对于基准测试,就像您的示例一样,我使用了梨基准测试包。您设置用于测量的标记。该课程还提供了一些演示帮助器,或者您可以根据需要处理数据。 实际上,我使用__destruct方法将其包装在另一个类中。当脚本退出时,输出将通过log4php记录到syslog中,因此我可以使用很多性能数据。
XDebug不稳定,并且不适用于特定的php版本。例如,在某些服务器上,我仍然运行php-5.1.6,这是RedHat RHEL5附带的(并且btw仍会接收所有重要问题的更新),而最近的XDebug甚至没有使用此php进行编译。所以我最终切换到DBG调试器 |
最新内容
相关内容
python有map方法吗
python有map方法吗,培训,位置,数据,函数,列表,序列,参数,元素,方法,使用方法,python中的map:map()会根据提供的函数对指定序列做映射。第一个pythonmap函数怎么显示结果
pythonmap函数怎么显示结果,培训,代码,数字,函数,结果,序列,元素,参数,可能会,惰性,map()函数接收两个参数,一个是函数,一个是Iterable,map将传python有哪些方法可以解压文件?
python有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大。python函数与方法的区别是什么
python函数与方法的区别是什么,培训,函数,方法,区别,对象,以上,方式,更多,内容,python中函数和方法的区别1、函数要手动传self,方法不用传selpython类自带方法吗
python类自带方法吗,培训,方法,里面,实例,也就是说,下面,对象,以上,之后,参数,python中的类,创建好之后,里面是没有方法的,也就是说,类并没有自带python子类可以调用父类方法吗
python子类可以调用父类方法吗,培训,名称,资料,情况,地方,函数,参数,方法,表示,语句,python中的子类中的__init__()函数会覆盖父类的函数,一些python静态方法怎么使用self
python静态方法怎么使用self,培训,管理,不了,方法,静态,属性,实例,变量,对象,参数,python-静态方法,类方法,属性方法静态方法实际上与类(或者实python怎么理解Python的构造方法
python怎么理解Python的构造方法,代码,名字,培训,方法,参数,对象,以上,结尾,函数,开头,在创建类时,我们可以手动添加一个__init__()方法,该方法python不支持next方法吗
python不支持next方法吗,异常,培训,项目,方法,对象,元素,参数,函数,语法,文件,Python3中的File对象不支持next()方法。Python3有一个内置函数python列表操作的函数和方法
python列表操作的函数和方法,培训,位置,列表,元素,操作,函数,末尾,方法,对象,以下,1列表操作包含以下函数:21、cmp(list1,list2):比较两个列表python怎么显示日期
python怎么显示日期,时间,单位,管理,培训,浮点,标准,项目,日期,格式,时钟,Python程序能用很多方式处理日期和时间,转换日期格式是一个常见的功python怎么调用类方法
python怎么调用类方法,培训,方法,实例,静态,定义,参数,属性,对象,关键字,以上,python中的类用来描述具有相同的属性和方法的对象的集合。它定