phpperftools / gui
PhpPerfTools/Collector收集的配置数据的基于Web的界面。
Requires
- php: ^5.6 || ^7.0
- ext-json: *
- it-for-free/array_column: ^1.1
- pimple/pimple: ^1.0.2
- slim/slim: ^2.6.3
- slim/views: ^0.1.0
- twig/twig: ~1.17
Requires (Dev)
- alcaeus/mongo-php-adapter: ^1.1
- phpunit/phpunit: ^5.7.27 | ^6.5.13
Suggests
- ext-curl: You need to install the curl extension to upload saved files
- ext-igbinary: Alternative serializer
- ext-json: You need json extension to work with json on some linux systems
- ext-mongo: Mongo is needed to store profiler results for PHP < 7.
- ext-mongodb: Mongo is needed to store profiler results for PHP > 7.
- ext-pdo: You need pdo extension with correct database driver loaded to work with PDO
- alcaeus/mongo-php-adapter: Mongo PHP Adapter is required for PHP >7 (when using ext-mongodb)
This package is auto-updated.
Last update: 2024-09-18 20:42:40 UTC
README
XHProf数据的图形界面。
此工具需要安装XHProf或其分支之一Uprofiler、Tideways。XHProf是一个PHP扩展,用于记录和提供配置数据。PhpPerfTools/GUI(此工具)获取这些信息,并提供一个方便的GUI来与之交互。
系统要求
PhpPerfTools/GUI有以下要求
- PHP版本5.3或更高。
- 基于MongoDB的安装
- 基于PDO的安装
- PDO扩展。
- 以下任一SQL服务器:MySQL/MariaDB或PostgreSQL。它也可以与SQLite一起工作。
- 上传配置
- CURL扩展。
- 适当的网络/防火墙规则:GUI实例和收集器实例必须能够相互看到。
- 以下任一XHProf、Uprofiler或Tideways用于实际配置数据。
- dom如果您正在运行测试,则需要DOM扩展(它是PHPUnit的依赖项)。
从源代码安装
-
从GitHub克隆或下载
PhpPerfTools/GUI
。 -
将您的Web服务器指向
public
目录。 -
设置
cache
目录的权限,允许Web服务器创建文件。如果您懒惰,则0777
将工作。以下命令更改
cache
目录的权限chmod -R 0777 cache
-
设置您的Web服务器。下面的配置部分描述了如何设置nginx和apache的重写规则。
MongoDB存储
-
启动一个MongoDB实例。
-
如果您的MongoDB配置使用身份验证,或者不在默认端口和localhost上运行,请更新PhpPerfTools/GUI的
config/config.php
,以便PhpPerfTools/GUI可以连接到您的mongod
实例。 -
(可选,但推荐) 向MongoDB添加索引以提高性能。
PhpPerfTools/GUI将配置信息存储在MongoDB的
数据库中的 results
集合中。添加索引可以提高性能,让您可以更快地浏览页面。要添加索引,请从命令提示符打开
mongo
shell。然后,使用MongoDB的db.collection.ensureIndex()
方法添加索引,如下所示$ mongo > use xhprof > db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } ) > db.results.ensureIndex( { 'profile.main().wt' : -1 } ) > db.results.ensureIndex( { 'profile.main().mu' : -1 } ) > db.results.ensureIndex( { 'profile.main().cpu' : -1 } ) > db.results.ensureIndex( { 'meta.url' : 1 } ) > db.results.ensureIndex( { 'meta.simple_url' : 1 } )
限制MongoDB磁盘使用量
磁盘使用量可能会迅速增长,尤其是在配置大型代码库或使用大型框架的应用程序时。
为了控制增长,配置MongoDB自动删除达到一定年龄的配置文档,通过创建TTL索引。
决定最大配置文件年龄(以秒为单位):在开发阶段(您对所有内容进行配置)和在生产阶段(您只对文档的一部分进行配置)时,您可能希望选择不同的值。以下命令指示Mongo删除5天(432000秒)以上的文档。
$ mongo
> use xhprof
> db.results.ensureIndex( { "meta.request_ts" : 1 }, { expireAfterSeconds : 432000 } )
PDO存储
架构
架构文件位于GUI的根目录中。将架构导入数据库并配置存储处理器。
配置
array(
'id' => 'sqlite-test',
'name' => 'Test sqlite instance',
'type' => 'pdo',
'dsn' => 'sqlite:../test.sqlite',
'user' => 'user',
'password' => 'password'
),
配置
配置Web服务器重写规则
PhpPerfTools/GUI更喜欢启用URL重写,但即使没有它也可以工作。对于Apache,您可以通过以下方式启用URL重写
-
确保允许.htaccess覆盖,并且AllowOverride已将FileInfo指令设置为正确的DocumentRoot。
Apache 2.4的示例配置
<Directory /var/www/gui/> Options Indexes FollowSymLinks AllowOverride FileInfo Require all granted </Directory>
-
确保您已正确加载mod_rewrite。您应该看到如下内容
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
-
PhpPerfTools/GUI附带一个
.htaccess
文件以启用剩余的重写规则。
对于nginx和fast-cgi,您可以从以下片段开始
server { listen 80; server_name example.com; # root directive should be global root /var/www/example.com/public/gui/public/; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
配置PhpPerfTools/GUI分析率
安装PhpPerfTools/GUI后,您可能希望更改对主机应用程序的分析频率。《code>profiler_enable配置选项允许您提供一个回调函数,该函数指定要分析的请求。默认情况下,PhpPerfTools/GUI分析1/100的请求。
以下示例配置PhpPerfTools/GUI以仅分析来自特定URL路径的请求
以下示例配置PhpPerfTools/GUI以分析1/100的请求,排除具有/blog
URL路径的请求
// In config/config.php return array( // Other config 'profiler_enable' => function() { $url = $_SERVER['REQUEST_URI']; if (strpos($url, '/blog') === 0) { return false; } return rand(1, 100) === 42; } );
相比之下,以下示例配置PhpPerfTools/GUI以分析每个请求
// In config/config.php return array( // Other config 'profiler_enable' => function() { return true; } );
配置'简单'URL创建
PhpPerfTools/GUI为收集到的每个配置文件生成'简单'URL。这些URL用于生成URL视图上使用的汇总数据。由于不同的应用程序对URL映射到逻辑代码块块的要求不同,profile.simple_url
配置选项允许您指定用于生成简单URL的逻辑。默认情况下,查询字符串中的所有数值都会被删除。
// In config/config.php return array( // Other config 'profile.simple_url' => function($url) { // Your code goes here. } );
URL参数是REQUEST_URI
或argv
值。
配置忽略的函数
您可以使用profiler_options
配置值来设置针对分析器扩展的附加选项。当您希望从分析器数据中排除特定函数时,这很有用。
// In config/config.php return array( //Other config 'profiler_options' => [ 'ignored_functions' => ['call_user_func', 'call_user_func_array'] ] );
分析Web请求或CLI脚本
使用collector,您可以从您的Web应用程序和CLI脚本中收集数据。然后,这些数据将推送到PhpPerfTools/GUI的数据库中,您可以在此应用程序中查看这些数据。
瀑布显示
PhpPerfTools/GUI的瀑布显示目标是认识到并发请求可能相互影响。并发数据库请求、CPU密集型活动,甚至是会话文件的锁定都可能变得相关。对于Ajax密集型应用程序,理解页面构建比单个加载要复杂得多:希望瀑布可以帮助。记住,如果您只分析请求样本,则瀑布会向您展示不礼貌的谎言。
使用Tideways扩展
XHProf PHP扩展与PHP7.0+不兼容。相反,您需要使用tideways_xhprof扩展。
安装后,您可以使用以下配置数据
[tideways_xhprof] extension="/path/to/tideways/tideways_xhprof.so"
许可证
原始代码版权所有2013 Mark Story & Paul Reinheimer 改变版权所有Grzegorz Drozd
特此授予任何获得此软件及其相关文档文件(“软件”)副本的任何人(“个人”)免费处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许软件提供者为此目的而使用该软件,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定目的和不侵犯版权。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论这些索赔、损害或其他责任是由于合同行为、侵权行为或其他原因引起的,无论与软件或其使用或其他方式有关。