mirror of
https://devops.lemonos.cn/lawson/FendxPHP.git
synced 2026-06-15 15:02:49 +08:00
- 创建用户表(users)包含基本信息和认证字段 - 创建角色表(roles)用于权限控制 - 创建权限表(permissions)定义系统权限 - 创建用户角色关联表(user_roles)建立用户与角色关系 - 创建角色权限关联表(role_permissions)建立角色与权限关系 - 创建迁移记录表(migrations)追踪数据库变更 - 添加AdminController提供管理员面板功能 - 实现系统监控、配置管理、缓存清理等功能 - 添加AOP切面编程支持的各种通知类型 - 实现告警管理AlertManager支持多渠道告警 - 添加文档注解接口规范
103 lines
2.6 KiB
PHP
103 lines
2.6 KiB
PHP
<?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;
|
|
}
|
|
}
|