mirror of
https://devops.lemonos.cn/lawson/FendxPHP.git
synced 2026-06-15 23:12:49 +08:00
feat(database): 添加用户角色权限系统及相关监控功能
- 创建用户表(users)包含基本信息和认证字段 - 创建角色表(roles)用于权限控制 - 创建权限表(permissions)定义系统权限 - 创建用户角色关联表(user_roles)建立用户与角色关系 - 创建角色权限关联表(role_permissions)建立角色与权限关系 - 创建迁移记录表(migrations)追踪数据库变更 - 添加AdminController提供管理员面板功能 - 实现系统监控、配置管理、缓存清理等功能 - 添加AOP切面编程支持的各种通知类型 - 实现告警管理AlertManager支持多渠道告警 - 添加文档注解接口规范
This commit is contained in:
102
app/Job/CleanupJob.php
Normal file
102
app/Job/CleanupJob.php
Normal file
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Job;
|
||||
|
||||
use Fendx\Core\Annotation\Service;
|
||||
use Fendx\Job\Annotation\Scheduled;
|
||||
use Fendx\Log\Logger;
|
||||
|
||||
#[Service]
|
||||
class CleanupJob
|
||||
{
|
||||
#[Scheduled('0 2 * * *', 'Daily cleanup at 2 AM')]
|
||||
public function dailyCleanup(): void
|
||||
{
|
||||
Logger::info('Starting daily cleanup job');
|
||||
|
||||
// 清理过期日志文件
|
||||
$this->cleanupOldLogs();
|
||||
|
||||
// 清理临时文件
|
||||
$this->cleanupTempFiles();
|
||||
|
||||
// 清理过期缓存
|
||||
$this->cleanupExpiredCache();
|
||||
|
||||
Logger::info('Daily cleanup job completed');
|
||||
}
|
||||
|
||||
#[Scheduled('*/5 * * * *', 'Every 5 minutes')]
|
||||
public function healthCheck(): void
|
||||
{
|
||||
// 检查系统健康状态
|
||||
$healthy = $this->checkSystemHealth();
|
||||
|
||||
if (!$healthy) {
|
||||
Logger::warning('System health check failed');
|
||||
}
|
||||
}
|
||||
|
||||
private function cleanupOldLogs(): void
|
||||
{
|
||||
$logDir = dirname(__DIR__, 2) . '/runtime/logs';
|
||||
$maxAge = 30 * 24 * 60 * 60; // 30天
|
||||
|
||||
if (is_dir($logDir)) {
|
||||
$files = glob($logDir . '/*.log');
|
||||
|
||||
foreach ($files as $file) {
|
||||
if (filemtime($file) < time() - $maxAge) {
|
||||
unlink($file);
|
||||
Logger::info("Deleted old log file: $file");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function cleanupTempFiles(): void
|
||||
{
|
||||
$tempDir = dirname(__DIR__, 2) . '/runtime/temp';
|
||||
$maxAge = 24 * 60 * 60; // 24小时
|
||||
|
||||
if (is_dir($tempDir)) {
|
||||
$files = glob($tempDir . '/*');
|
||||
|
||||
foreach ($files as $file) {
|
||||
if (is_file($file) && filemtime($file) < time() - $maxAge) {
|
||||
unlink($file);
|
||||
Logger::info("Deleted temp file: $file");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function cleanupExpiredCache(): void
|
||||
{
|
||||
// 这里可以添加Redis缓存清理逻辑
|
||||
Logger::info('Cache cleanup completed');
|
||||
}
|
||||
|
||||
private function checkSystemHealth(): bool
|
||||
{
|
||||
// 检查数据库连接
|
||||
try {
|
||||
$pdo = new \PDO('mysql:host=127.0.0.1;dbname=fendx', 'root', '');
|
||||
$pdo->query('SELECT 1');
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查Redis连接
|
||||
try {
|
||||
$redis = new \Redis();
|
||||
$redis->connect('127.0.0.1', 6379);
|
||||
$redis->ping();
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user