Файл: new_top/modules/cron.php
Строк: 42
<?php
/**
* Daily reset — call: /?module=cron&key=YOUR_KEY
* Set key in core/config/database.php → security.cron_key
* or env-style: same as csrf_key fallback
*/
declare(strict_types=1);
$config = require CONFIG_PATH;
$expected = $config['security']['cron_key'] ?? ($config['security']['csrf_key'] ?? '');
$given = (string)($_GET['key'] ?? '');
header('Content-Type: text/plain; charset=utf-8');
if ($expected === '' || !hash_equals((string)$expected, $given)) {
http_response_code(403);
echo "Forbiddenn";
exit;
}
// Snapshot "yesterday" into *_today fields already used as period counters:
// Reset period counters, keep *_all
Database::query(
'UPDATE platforms SET
hs_today = hs,
ht_today = ht,
hs = 0,
ht = 0,
mb = 0,
pc = 0'
);
// Unique hosts log for new day
Database::query('TRUNCATE TABLE hs');
// Online presence
Database::query('TRUNCATE TABLE on_log');
// Keep ht history for charts but purge older than 60 days
$old = time() - 60 * 86400;
Database::query('DELETE FROM ht WHERE time < ?', [$old]);
Database::query('DELETE FROM in_log WHERE time < ?', [$old]);
try {
Database::query('DELETE FROM cheat_log WHERE time < ?', [time() - 14 * 86400]);
} catch (Throwable $e) {}
$snapped = 0;
try {
$snapped = Stats::snapshotRanks();
} catch (Throwable $e) {
echo 'rank_snap skip: ' . $e->getMessage() . "n";
}
echo 'OK ' . date('c') . " ranks=" . $snapped . "n";