赵申托夫/xhgui-collector

用于收集和存储XHProf结果的库,以便XHGUI后续使用。

1.8.1 2020-06-15 08:18 UTC

This package is auto-updated.

Last update: 2024-09-15 17:49:17 UTC


README

Build Status Scrutinizer Code Quality

XHGUI Collector

这是一个小型独立模块,您可以使用它来收集和存储XHProf性能数据,以便在XHGUI中后续使用。

目标

  • 兼容PHP >= 5.3.0
  • 除了相关扩展外没有其他依赖
  • 可定制和可配置,您可以在其之上构建自己的逻辑
  • 在保存到数据库之前准备配置文件的可能性。
  • 根据限制,替换配置文件键中的点以与最新MongoDB版本兼容。

XHGUI 兼容性

该项目最初是从 perftools/xhgui@133051f 分支的0.7.1标签之后分叉的。

这应确保与0.7.1(含)之前的所有标签的兼容性。

唯一可能破坏兼容性的更改将是XHGUI端的数据模式更改。

此表表示关于本项目与XHGUI数据模式的已知兼容性信息。

使用方法

分析应用程序或网站

分析应用程序最简单的方法是使用 external/header.phpexternal/header.php 设计为与PHP的 auto_prepend_file 指令结合使用。您可以通过 php.ini 在全局范围内启用 auto_prepend_file。或者,您也可以通过虚拟主机启用 auto_prepend_file

使用Apache,它看起来像这样

<VirtualHost *:80>
  php_admin_value auto_prepend_file "/Users/markstory/Sites/xhgui/external/header.php"
  DocumentRoot "/Users/markstory/Sites/awesome-thing/app/webroot/"
  ServerName site.localhost
</VirtualHost>

使用Nginx在fastcgi模式下,您可以这样做

server {
  listen 80;
  server_name site.localhost;
  root /Users/markstory/Sites/awesome-thing/app/webroot/;
  fastcgi_param PHP_VALUE "auto_prepend_file=/Users/markstory/Sites/xhgui/external/header.php";
}

分析CLI脚本

分析CLI最简单的方法是使用 external/header.phpexternal/header.php 设计为与PHP的 auto_prepend_file 指令结合使用。您可以通过 php.ini 在全局范围内启用 auto_prepend_file。或者,您也可以在脚本的顶部包含 header.php

<?php
require '/path/to/xhgui/external/header.php';
// Rest of script.

您还可以在运行PHP时使用 -d 标志

php -d auto_prepend_file=/path/to/xhgui/external/header.php do_work.php

使用环境变量

  • 运行 composer require perftools/xhgui-collector
  • 将这些行包含到您的引导文件中(例如 index.php)
define('XHGUI_CONFIG_DIR', PATH_TO_OWN_CONFIG);
require_once PATH_TO_YOUR_VENDOR . '/perftools/xhgui-collector/external/header.php';
  • 设置环境变量以配置mongodb主机、数据库名称等

系统要求

要使用数据收集类,您需要以下内容

  • PHP版本5.3或更高。
  • XHProfUprofilerTideways以实际分析数据。
  • 某种方式访问MongoDB服务器。选择以下之一
    • MongoDB 扩展>=1.3.0(MongoDB PHP驱动程序来自pecl)
    • composor依赖项 alcaeus/mongo-php-adapter
  • 一个MongoDB服务器。XHGUI需要2.2.0或更高版本。

如有疑问,请参考XHGUI仓库的composer.json文件或本仓库的composer.json文件的建议部分。