XhprofBundle, 用于 Symfony 2的XHProf包

分享于 

9分钟阅读

GitHub

  繁體 雙語
XHProf bundle for Symfony 2
  • 源代码名称:XhprofBundle
  • 源代码网址:http://www.github.com/jonaswouters/XhprofBundle
  • XhprofBundle源代码文档
  • XhprofBundle源代码下载
  • Git URL:
    git://www.github.com/jonaswouters/XhprofBundle.git
    Git Clone代码到本地:
    git clone http://www.github.com/jonaswouters/XhprofBundle
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/jonaswouters/XhprofBundle
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    自述文件

    什么是 XHProf?

    XHProf是一个用于PHP的分级分析器。 它报告函数级调用计数和包含和独占度量,比如墙( 已经过) 时间。CPU时间和内存使用。 函数的概要可以被调用者或者被调用者分解。 原始数据收集组件以 PHP Zend 扩展的形式实现,称为 xhprof。 XHProf有一个简单的基于HTML的用户界面( 用PHP编写)。 用于查看探查器结果的浏览器用户界面使查看结果更容易,或者与对等方共享结果。 还支持一个callgraph图像视图。

    请参阅官方文档。

    Symfony 2包做什么?

    这个包帮助你轻松地使用XHProf包和 2中的web调试工具栏。 使用 Symfony 2.3和更新版本,它还可以配置控制台命令。

    安装

    确保已经安装 XHProf。 如果你在mac上,你可以通过 Macports 安装php5-xhprof轻松安装它

    作曲家

    将下列依赖项添加到项目的composer.json file:

    
    ```json
    
    
    "require": {
    
    
    "jns/xhprof-bundle":"1.0.*@dev",
    
    
    "lox/xhprof":"dev-master@dev"
    
    
    }
    
    
    ```
    
    
    
    

    当然,你必须在服务器中安装 xhprof库插件。 此时,不需要 ext-xhprof,因为你的应用程序可以部署到没有xhprof的服务器上。

    通过添加到你的vendor/bundles/目录中

    • 要安装包,请将它的放在项目的src/Jns/Bundle 目录 of

    ( 以 src/Jns/Bundle/XhprofBundle 为单位)。 可以通过将包作为子模块添加。克隆或者简单地下载源代码来实现。

    
    ```bash
    
    
    $ git submodule add https://github.com/jonaswouters/XhprofBundle.git src/Jns/Bundle/XhprofBundle
    
    
    ```
    
    
    
    
    • 将Jns命名空间添加到自动加载程序
    
    If this is the first Jns bundle in your Symfony 2 project, you'll
    
    
    
    

    需要将 Jns 命名空间添加到自动加载程序。 这里文件通常位于 app/autoload.php

    
    ```php
    
    
    $loader->registerNamespaces(array(
    
    
     'Jns' => __DIR__.'/../src'
    
    
    //...
    
    
    ));
    
    
    ```
    
    
    
    

    初始化分发包

    要初始化包,你需要在内核中添加它。 这里文件通常位于 app/AppKernel.php。 建议仅在你的开发环境中加载它。

    publicfunctionregisterBundles(){//.. .if (in_array($this->getEnvironment(), array('dev', 'test'))) {//.. .$bundles[] =newJnsBundleXhprofBundleJnsXhprofBundle(); }}

    配置

    配置XHProf位置。

    在 macports php5-xhprof默认安装( xhprof站点位于 http://xhprof.localhost ) 中,配置了 Bundle。 若要更改环境的这些设置,可以在配置中定义下列设置来覆盖默认设置。 这个配置通常位于 app/config/config_dev.yml

    jns_xhprof:
     location_web: http://xhprof.localhostenabled: true

    不要忘记将 enabled 设置为 true,否则profiler将永远不会被激活。

    使用 XHGui

    使用一个数据库后端, XHGui插件是一个用于PHP扩展的GUI,它可以很容易地使用并解释它的功能。 XHProf包支持使用XHGui来显示结果。 要使用,安装 XHGui,并将以下两个设置添加到配置中,通常位于 app/config/config.yml:

    jns_xhprof:
     entity_manager: <name_of_entity_manager> (defaults to default)entity_class: AcmeFooBundleEntityXhprofDetailenable_xhgui: true

    创建你的类 AcmeFooBundleEntityXhprofDetail:

    <?phpnamespaceAcmeFooBundleEntity;useJnsBundleXhprofBundleEntityXhprofDetailasBaseXhprofDetail;useDoctrineORMMappingasORM;/** * @ORMEntity * @ORMTable(name="details")*/classXhprofDetailextendsBaseXhprofDetail{/** * @var integer $id * * @ORMColumn(name="id", type="string", unique=true, length=17, nullable=false) * @ORMId*/protected$id;}

    如果只定义了一个实体管理器,则不需要在这里设置它。 这个设置是针对 XHGui ( 强烈推荐) 使用单独的剖析数据库的情况。

    指定样本大小

    你可以指定用于分析的样本大小。 这对于收集生产环境中真实请求的随机样本非常有用。 如果你有大量的请求,你真的不希望对它们进行剖析。

    样本大小设置为概率的概率,例如,如果将样例大小设置为 2,则每个第二个请求。 当然,在生产中,你要将它的设置为更高的值。 默认值为 1,因此将对每个请求进行分析。

    jns_xhprof:
     sample_size: 2

    禁用内置函数

    你可以跳过所有内置的( 内部) 函数。

    jns_xhprof:
     skip_builtin_functions: true

    Web请求分析

    仅对带有触发器参数的请求启用 XHProf

    可以指定 request_query_argument 参数,使XHProf仅在具有该参数的请求上激活。 这对在不影响其他请求的情况下配置生产系统很有用。

    jns_xhprof:
     request_query_argument: "__xhprof"
    仅用于匹配 Pattern 请求的XHProf

    在配置中配置 exclude_patterns 参数是有可能的。 仅对请求 MATCH的请求启用 XHProf。

    jns_xhprof:
     exclude_patterns: ['/css/', '/js/']
    将XHProf与已经禁用的Symfony分析器一起使用

    最常见的情况是 prod 模式。 默认情况下,事件探查器处于禁用状态。 可以配置XHProf包以使用 XHProf web UI URL发送当前令牌的自定义响应 header。 header NAME 可以在包配置中使用 response_header 参数配置。 空值完全禁用这里 header。 默认 header NAME 为 X-Xhprof-Url

    命令行控制台命令配置文件

    启用控制台命令分析

    你可以将控制台命令的配置文件设置为 onoff 或者 option

    • on: 根据 sample_size 对所有命令进行分析;
    • off: 没有任何命令被配置为( 但是,web请求可能被) ;
    • option: 命令获取用于触发分析的附加选项。
    jns_xhprof:
     command: "off"
    仅使用特定选项启用 XHProf

    command 设置为 option 时,可以指定一个选项 NAME,该选项将触发在命令上运行的探查器。 选项将自动在所有命令上可用。

    jns_xhprof:
     command: "option"command_option_name: xhprof

    现在可以使用以下命令配置命令

    $ app/console acme:my:command --xhprof
    从分析中排除某些命令

    使用 on 设置时,你可能需要筛选哪些命令被配置。 如果 NAME 筛选器 MATCHES,则分析器将永远不会触发。

    jns_xhprof:
     command_exclude_patterns: ['acme:', ':debug']

    Bundle  symfony  xhp  Xhprof  
    相关文章