![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/soundstudiopro.com/private_html/api/ |
<?php
session_start();
header('Content-Type: application/json');
// Check if user is admin
if (!isset($_SESSION['user_id']) || !isset($_SESSION['is_admin']) || !$_SESSION['is_admin']) {
echo json_encode([
'success' => false,
'message' => 'Admin access required'
]);
exit;
}
try {
require_once '../config/database.php';
$pdo = getDBConnection();
// Get failed tracks with analysis
$stmt = $pdo->prepare("
SELECT
mt.id,
mt.title,
mt.prompt,
mt.user_id,
mt.created_at,
mt.api_task_id,
mt.status,
mt.error_message,
u.name as user_name,
u.email as user_email
FROM music_tracks mt
LEFT JOIN users u ON mt.user_id = u.id
WHERE mt.status = 'failed'
ORDER BY mt.created_at DESC
");
$stmt->execute();
$failed_tracks = $stmt->fetchAll();
// Analyze failure patterns
$analysis = [
'total_failed' => count($failed_tracks),
'failure_reasons' => [],
'users_affected' => [],
'recent_failures' => 0
];
$recent_cutoff = date('Y-m-d H:i:s', strtotime('-24 hours'));
foreach ($failed_tracks as $track) {
// Count recent failures
if ($track['created_at'] >= $recent_cutoff) {
$analysis['recent_failures']++;
}
// Track failure reasons
$reason = $track['error_message'] ?: 'Unknown error';
if (!isset($analysis['failure_reasons'][$reason])) {
$analysis['failure_reasons'][$reason] = 0;
}
$analysis['failure_reasons'][$reason]++;
// Track affected users
if (!isset($analysis['users_affected'][$track['user_id']])) {
$analysis['users_affected'][$track['user_id']] = [
'name' => $track['user_name'],
'email' => $track['user_email'],
'failed_count' => 0
];
}
$analysis['users_affected'][$track['user_id']]['failed_count']++;
}
echo json_encode([
'success' => true,
'data' => $failed_tracks,
'analysis' => $analysis
]);
} catch (Exception $e) {
error_log("Get failed tracks analysis error: " . $e->getMessage());
echo json_encode([
'success' => false,
'message' => 'Database error occurred'
]);
}
?>