anime-backlog-list/php/get_stats.php

67 lines
2.4 KiB
PHP
Raw Permalink Normal View History

2025-01-07 12:23:54 +05:00
<?php
function getDirectorySize($dir) {
$size = 0;
if (is_dir($dir)) {
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS)) as $file) {
$size += $file->getSize();
}
}
return $size;
}
// Функция для подсчета количества файлов в директории
function getFileCount($dir) {
$count = 0;
if (is_dir($dir)) {
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS)) as $file) {
if ($file->isFile()) {
$count++;
}
}
}
return $count;
}
// Определяем абсолютные пути к директориям кэша для расчета статистики
$cache_images_dir = __DIR__ . '/cache/images/';
$cache_meta_dir = __DIR__ . '/cache/meta/';
// Расчет размера кэша (только изображения)
$cache_size_bytes = getDirectorySize($cache_images_dir);
$cache_size_mb = round($cache_size_bytes / (1024 * 1024), 2);
// Подсчет количества изображений в кэше
$image_count = getFileCount($cache_images_dir);
// Fetch statistics
$stats = [];
// Total number of entries
$query = "SELECT COUNT(*) AS total_entries FROM anime_list";
$stats['total_entries'] = $conn->query($query)->fetch(PDO::FETCH_ASSOC)['total_entries'];
// Total number of completed anime
$query = "SELECT COUNT(*) AS completed_anime FROM anime_list WHERE is_completed = 1";
$stats['completed_anime'] = $conn->query($query)->fetch(PDO::FETCH_ASSOC)['completed_anime'];
// Count by type
$query = "SELECT type, COUNT(*) AS count FROM anime_list GROUP BY type";
$stats['by_type'] = $conn->query($query)->fetchAll(PDO::FETCH_ASSOC);
// Most recent completion date
$query = "SELECT MAX(date_completed) AS most_recent_completion FROM anime_list WHERE date_completed IS NOT NULL";
$stats['most_recent_completion'] = $conn->query($query)->fetch(PDO::FETCH_ASSOC)['most_recent_completion'];
// DB size
$query = "SELECT SUM(data_length + index_length) AS size FROM information_schema.TABLES WHERE table_schema = :dbname";
$stmt = $conn->prepare($query);
$stmt->execute(['dbname' => $dbname]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$size_in_bytes = $row['size'];
$size_in_kilobytes = $size_in_bytes / 1024;
?>