59 lines
2.0 KiB
C#
59 lines
2.0 KiB
C#
namespace BLAIzor.Services
|
|
{
|
|
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.Logging;
|
|
using System.IO;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
public class TempFileCleanupService : BackgroundService
|
|
{
|
|
private readonly ILogger<TempFileCleanupService> _logger;
|
|
private readonly string _tempDirectory;
|
|
private readonly TimeSpan _checkInterval = TimeSpan.FromMinutes(30);
|
|
private readonly TimeSpan _fileLifetime = TimeSpan.FromHours(1);
|
|
|
|
public TempFileCleanupService(ILogger<TempFileCleanupService> logger, IWebHostEnvironment env)
|
|
{
|
|
_logger = logger;
|
|
_tempDirectory = Path.Combine(env.WebRootPath, "temp");
|
|
}
|
|
|
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
|
{
|
|
_logger.LogInformation("TempFileCleanupService started.");
|
|
|
|
while (!stoppingToken.IsCancellationRequested)
|
|
{
|
|
try
|
|
{
|
|
if (Directory.Exists(_tempDirectory))
|
|
{
|
|
var now = DateTime.UtcNow;
|
|
var files = Directory.GetFiles(_tempDirectory, "style_*.css");
|
|
|
|
foreach (var file in files)
|
|
{
|
|
var fileInfo = new FileInfo(file);
|
|
if (now - fileInfo.LastWriteTimeUtc > _fileLifetime)
|
|
{
|
|
fileInfo.Delete();
|
|
_logger.LogInformation($"Deleted old temp file: {fileInfo.Name}");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError(ex, "Error occurred during temp file cleanup.");
|
|
}
|
|
|
|
await Task.Delay(_checkInterval, stoppingToken);
|
|
}
|
|
|
|
_logger.LogInformation("TempFileCleanupService stopped.");
|
|
}
|
|
}
|
|
|
|
}
|