IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

在生产环境中使用php性能测试工具xhprof

某人的栖息地 2009-10-27 08:58:40 累计浏览 4,868 次
本机暂存

    xhprof是facebook开源出来的一个php性能测试工具,也可以称之为profile工具,这个词不知道怎么翻译才比较达意。跟之前一直使用的xdebug相比,有很多类似之处。以前对xdebug有一些记录还可以供参考,但是它的缺点是对性能影响太大,即便是开启了profiler_enable_trigger参数,用在生产环境中也是惨不忍睹,cpu立刻就飙到high。

    而xhprof就显得很轻量,是否记录profile可以由程序控制,因此,用在生产环境中也就成为一种可能。在它的文档上可以看到这样一种用法:

    以万分之一的几率启用xhprof,平时悄悄的不打枪。

以下是代码片段:
if (mt_rand(1, 10000) == 1) {
 xhprof_enable(XHPROF_FLAGS_MEMORY);
 $xhprof_on = true;

    在程序结尾处调用方法保存profile

以下是代码片段:
if ($xhprof_on) {
 // stop profiler
 $xhprof_data = xhprof_disable();

 // save $xhprof_data somewhere (say a central DB)
 ...

    也可以用register_shutdown_function方法指定在程序结束时保存xhprof信息,这样就免去了结尾处判断,给个改写的不完整例子:

以下是代码片段:
if (mt_rand(1, 10000) == 1) {
 xhprof_enable(XHPROF_FLAGS_MEMORY);
 register_shutdown_function(create_funcion(\’\’, "$xhprof_data = xhprof_disable(); save $xhprof_data;"));

    至于日志,我暂时用的是最土的文件形式保存,定期清除即可。

    BTW:xhprof生成的图形方式profile真是酷毙了,哪段代码成为瓶颈,一目了然。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 使用gettext来支持PHP的多语言 (累计阅读 39,270)
  2. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
  3. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,408)
  4. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,523)
  5. Linux如何统计进程的CPU利用率 (累计阅读 16,308)
  6. 如何查找消耗资源较大的SQL (累计阅读 15,212)
  7. 我的PHP,Python和Ruby之路 (累计阅读 13,150)
  8. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,790)
  9. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  10. Redis消息队列的若干实现方式 (累计阅读 12,088)