jns/xhprof-bundle

该包已被废弃且不再维护。未建议替代包。

Symfony JnsXhprofBundle

安装量: 469 289

依赖项: 1

建议者: 0

安全: 0

星标: 212

关注者: 11

分支: 49

开放问题: 9

类型:symfony-bundle

v1.1.0 2015-10-01 13:48 UTC

This package is not auto-updated.

Last update: 2022-08-06 03:14:01 UTC


README

Build Status Scrutinizer Code Quality Code Coverage

什么是 XHProf?

XHProf 是一个 PHP 的层次化分析器。它报告函数级别的调用次数以及包括墙时(经过时间)、CPU 时间和内存使用等在内的指标。一个函数的配置文件可以根据调用者或被调用者进行分解。原始数据收集组件是用 C 实现的 PHP Zend 扩展,称为 xhprof。XHProf 有一个简单的基于 HTML 的用户界面(用 PHP 编写)。基于浏览器的 UI 用于查看分析结果,这使得查看结果或与同行分享结果变得容易。还支持调用图图像视图。

查看 官方文档

这个 Symfony 2 Bundle 做了什么?

该包帮助您轻松使用 XHProf 包与 Symfony 2 中的网络调试工具栏。在 Symfony 2.3 及更高版本中,它还可以分析控制台命令。

安装

请确保您已安装 XHProf。如果您在 Mac 上,您可以通过 Macports sudo port install php5-xhprof 简单地安装它

  1. Composer

将以下依赖项添加到您的项目 composer.json 文件中

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

当然,您必须在您的服务器上安装 xhprof 库。在此阶段,ext-xhprof 不是必需的,因为您的应用程序可以部署到没有 xhprof 的服务器上。

  1. 通过添加到您的 vendor/bundles/ 目录的旧方法

  2. 要安装包,将其放置在项目的 src/Jns/Bundle 目录中

(因此它位于 src/Jns/Bundle/XhprofBundle)。您可以通过将包作为子模块添加、克隆它或简单地下载源代码来完成此操作。

```bash
$ git submodule add https://github.com/jonaswouters/XhprofBundle.git src/Jns/Bundle/XhprofBundle
```
  1. 将 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。建议仅在开发环境中加载它。

public function registerBundles()
{
    // ...

    if (in_array($this->getEnvironment(), array('dev', 'test'))) {
        // ...
        $bundles[] = new Jns\Bundle\XhprofBundle\JnsXhprofBundle();
    }
}

配置

配置 XHProf 位置。

此Bundle已预先配置为macports php5-xhprof默认安装,xhprof网站位于http://xhprof.localhost。要更改您环境的这些设置,您可以在config中定义以下设置来覆盖默认设置。配置通常位于app/config/config_dev.yml

jns_xhprof:
    location_web:    http://xhprof.localhost
    enabled:         true

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

使用XHGui

XHGui是XHProf PHP扩展的图形用户界面,使用数据库后端和漂亮的图表,使其易于使用和解释。XHProf Bundle支持使用XHGui来显示结果。要使用,安装XHGui,并在配置中添加以下两个设置,通常位于app/config/config.yml

jns_xhprof:
    entity_manager:  <name_of_entity_manager> (defaults to default)
    entity_class:    Acme\FooBundle\Entity\XhprofDetail
    enable_xhgui:    true

创建您的类Acme\FooBundle\Entity\XhprofDetail

<?php

namespace Acme\FooBundle\Entity;

use Jns\Bundle\XhprofBundle\Entity\XhprofDetail as BaseXhprofDetail;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="details")
 */
class XhprofDetail extends BaseXhprofDetail
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="string", unique=true, length=17, nullable=false)
     * @ORM\Id
     */
    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"

仅对匹配模式的请求启用XHProf

您可以在配置中配置exclude_patterns参数。XHProf将只为匹配这些模式的请求启用。

jns_xhprof:
    exclude_patterns: ['/css/', '/js/']

使用禁用Symfony分析器的XHProf

最常见的情况是prod模式。在默认情况下,Symfony分析器在此模式下被禁用。您可以配置XHProf Bundle以发送包含XHProf Web UI URL的自定义响应头,用于当前令牌。头名称可以通过包配置中的response_header参数进行配置。空值将完全禁用此头。默认头名称是X-Xhprof-Url

控制台命令分析

启用控制台命令分析

您可以将控制台命令的分析设置为onoffoption

  • on:所有命令都将根据sample_size进行分析;
  • 关闭:没有命令被分析(但Web请求可能被分析);
  • 选项:命令获得一个额外的选项来触发分析。
jns_xhprof:
    command: "off"

仅使用特定选项启用XHProf

当您将command设置为选项时,您可以指定一个选项名称,该名称将在命令上触发分析器运行。该选项将自动在所有命令上可用。

jns_xhprof:
    command: "option"
    command_option_name: xhprof

现在您可以使用以下方式分析命令

$ app/console acme:my:command --xhprof

排除某些命令的分析

当使用on设置时,您可能希望过滤要分析哪些命令。如果名称过滤器匹配,分析器将永远不会触发。

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