Laravel Slower 项目教程
1. 项目的目录结构及介绍
Laravel Slower 项目的目录结构如下:
laravel-slower/
├── config/
│ └── slower.php
├── database/
│ └── migrations/
├── src/
│ ├── Commands/
│ ├── Models/
│ └── SlowerServiceProvider.php
├── tests/
├── .editorconfig
├── .gitattributes
├── .gitignore
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── SECURITY.md
├── composer.json
├── phpstan-baseline.neon
├── phpstan.neon.dist
├── phpunit.xml.dist
目录介绍:
config/
:包含项目的配置文件。database/migrations/
:包含数据库迁移文件。src/
:包含项目的源代码,包括命令、模型和服务提供者。tests/
:包含项目的测试文件。.editorconfig
、.gitattributes
、.gitignore
:编辑器和版本控制配置文件。CHANGELOG.md
、LICENSE.md
、README.md
、SECURITY.md
:项目文档文件。composer.json
:Composer 依赖管理文件。phpstan-baseline.neon
、phpstan.neon.dist
:PHPStan 静态分析配置文件。phpunit.xml.dist
:PHPUnit 测试配置文件。
2. 项目的启动文件介绍
项目的启动文件主要是 src/SlowerServiceProvider.php
,它是一个 Laravel 服务提供者,负责注册和启动 Laravel Slower 包。
namespace HalilCosdu\Slower;
use Illuminate\Support\ServiceProvider;
class SlowerServiceProvider extends ServiceProvider
{
public function boot()
{
// 发布配置文件
$this->publishes([
__DIR__.'/../config/slower.php' => config_path('slower.php'),
], 'slower-config');
// 加载迁移文件
$this->loadMigrationsFrom(__DIR__.'/../database/migrations');
}
public function register()
{
$this->mergeConfigFrom(
__DIR__.'/../config/slower.php', 'slower'
);
}
}
启动文件介绍:
boot()
方法:负责发布配置文件和加载迁移文件。register()
方法:负责合并配置文件。
3. 项目的配置文件介绍
项目的配置文件位于 config/slower.php
,它包含了 Laravel Slower 包的所有配置选项。
return [
'enabled' => env('SLOWER_ENABLED', true),
'threshold' => env('SLOWER_THRESHOLD', 10000),
'resources' => [
'table_name' => (new SlowLog)->getTable(),
'model' => SlowLog::class,
],
'ai_recommendation' => env('SLOWER_AI_RECOMMENDATION', true),
'recommendation_model' => env('SLOWER_AI_RECOMMENDATION_MODEL', 'gpt-4'),
'recommendation_use_explain' => env('SLOWER_AI_RECOMMENDATION_USE_EXPLAIN', true),
'ignore_explain_queries' => env('SLOWER_IGNORE_EXPLAIN_QUERIES', true),
'ignore_insert_queries' => env('SLOWER_IGNORE_INSERT_QUERIES', true),
'open_ai' => [
'api_key' => env('OPENAI_API_KEY'),
'organization' => env('OPENAI_ORGANIZATION'),
'request_timeout' => env('OPENAI_TIMEOUT'),
],
'prompt' => env('SLOWER_PROMPT', 'As a distinguished'),
];
配置文件介绍:
enabled
:是否启用 Laravel Slower 包。threshold
:慢查询的时间阈值。resources
:资源配置,包括表名和模型。ai_recommendation
:是否启用 AI 推荐。recommendation_model
:AI 推荐模型。- `recommend