Файл: system/common.php
Строк: 52
<?php
/* Обновление игры под PHP 8.4 / PDO и усиление безопасности: by Метриум (Стэлп) */
declare(strict_types=1);
if (!defined('GAME_ROOT')) { define('GAME_ROOT', dirname(__DIR__)); }
if (PHP_SAPI !== 'cli' && ob_get_level() === 0) { ob_start(); } // legacy-safe redirects; by Метриум (Стэлп)
$GLOBALS['__request_started_at'] = microtime(true);
if (!defined('GAME_LIVE_SYNC')) { define('GAME_LIVE_SYNC', PHP_SAPI !== 'cli' && isset($_GET['_live_sync'])); }
$title = $title ?? 'Битва за трон';
require_once __DIR__.'/logger.php';
app_register_error_handlers();
if (function_exists('app_register_performance_logger')) app_register_performance_logger();
require_once __DIR__.'/security.php';
require_once __DIR__.'/database.php';
require_once __DIR__.'/progression.php';
require_once __DIR__.'/clan_quests.php';
require_once __DIR__.'/activity.php';
require_once __DIR__.'/moderation.php';
require_once __DIR__.'/ui_modules.php';
require_once __DIR__.'/v23_features.php';
require_once __DIR__.'/v35_features.php';
require_once __DIR__.'/v36_features.php';
require_once __DIR__.'/v37_features.php';
require_once __DIR__.'/v50_features.php';
require_once __DIR__.'/v51_events.php';
require_once __DIR__.'/automation.php';
require_once __DIR__.'/hall_records.php'; // Hall of Fame engine, by Метриум (Стэлп)
require_once __DIR__.'/tutorial.php';
security_bootstrap();
security_request_guard();
if (session_status() !== PHP_SESSION_ACTIVE) session_start();
if (PHP_SAPI !== 'cli' && !GAME_LIVE_SYNC && !security_rate_limit('global', 180, 60)) { http_response_code(429); exit('Вы слишком часто совершаете действия. Попробуйте чуть позже.'); }
try { db_pdo(); }
catch (Throwable $e) {
error_log('[BOOT] Database connection failed: '.$e->getMessage());
http_response_code(503);
echo "<link rel='stylesheet' href='/style.css'><div class='center'><img src='/profilaktika.png' alt='Технические работы' style='max-width:100%'></div>";
exit;
}
// Heartbeat-запросы событий должны быть лёгкими: без глобальных миграций, очисток и фоновых тиков.
if (!GAME_LIVE_SYNC) {
game_progression_bootstrap();
moderation_cleanup_expired();
game_item_quality_sync_catalog();
game_v23_bootstrap();
game_v35_bootstrap();
game_weekly_tick();
game_v50_bootstrap();
game_v51_bootstrap();
game_v51_events_tick();
game_automation_tick();
}