vitoresis/extend-analysis

PHP 请求/服务器的分析和配置

1.0.0 2024-09-13 20:18 UTC

This package is auto-updated.

Last update: 2024-09-13 20:20:49 UTC


README

Latest Stable Version PHP Version Require License Total Downloads Repo Stars

简单强大的请求/服务器监控,具有交互式实时仪表板,用于简单的分析和手动配置。单元测试已在以下版本通过:5.67.48.18.28.3

安装

composer require vitorsreis/extend-analysis

请求监控

• 简单启动使用

use VSR\Extend\Analysis;

# Create driver
$driver = new Analysis\Driver\Standard(__DIR__);

# Set driver
Analysis::setDriver($driver);

# @param bool $autoSave [optional] Save automatically on shutdown event
#                       default: true, if false, you need call $requestProfile->save() manually
global $profile;
$profile = new Analysis\Request();

• 向配置树添加动作

建议使用 try/catch/finally 来捕获错误,尽管 Error\Exception 会自动捕获。在代码中战略性位置使用,以更好地构建您的树,例如调用中间件、模型代理等。

global $profile;
try {
    $profile->start(/* profile_name */); # up level, start action monitor
    // your code
} catch (Throwable $e) {
    $profile->error($e); # register error in current level
    // your code
} finally {
    $extra = ...; // [optional] extra info about action
    $profile->stop($extra || null); # down level, end action monitor
}

• 添加关于请求的额外信息

$requestProfile->extra(...);

• 在保存前捕获

您可以在保存前捕获请求并在必要时取消它或删除一些数据。使用 "return false" 来取消保存。

global $requestProfile;
$requestProfile->onBeforeSave(function (array $request) {
    # Toleration of 1000 actions, 300ms of duration and not error
    if ($request['profile_count'] < 1000 && $request['duration'] < .300 && !$request['error']) {
        # Remove debug fields to save space in database
        $fields = [
            'referer',
            'useragent',
            'get',
            'post',
            'raw_post',
            'files',
            'cookies',
            'server',
            'headers', 
            'inc_files',
            'error',
            'extra',
            'profile'
        ];
        foreach ($fields as $field) {
            $request[$field] = null;
        }
    }
    return $request;
});

服务器监控

examples/serverTop.php 中的使用示例