Files
michaelschiemer/src/preload.php
Michael Schiemer 55a330b223 Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug
- Add DISCOVERY_SHOW_PROGRESS=true
- Temporary changes for debugging InitializerProcessor fixes on production
2025-08-11 20:13:26 +02:00

101 lines
2.9 KiB
PHP

<?php
declare(strict_types=1);
// OPcache Preload für Performance-Optimierung
// Autoloader einbinden
require_once __DIR__ . '/../vendor/autoload.php';
// Framework Core-Klassen preloaden (am häufigsten verwendet)
$coreClasses = [
// Application Core
'App\Framework\Core\Application',
'App\Framework\Core\AppBootstrapper',
'App\Framework\Core\ContainerBootstrapper',
// DI Container
'App\Framework\DI\DefaultContainer',
// HTTP & Routing
'App\Framework\Http\HttpMiddleware',
'App\Framework\Http\HttpMiddlewareChain',
'App\Framework\Http\MiddlewareManager',
'App\Framework\Router\HttpRouter',
'App\Framework\Router\CompiledRoutes',
'App\Framework\Router\RouteContext',
// Core Middlewares
'App\Framework\Http\Middlewares\RoutingMiddleware',
'App\Framework\Http\Middlewares\ExceptionHandlingMiddleware',
'App\Framework\Http\Middlewares\RequestIdMiddleware',
'App\Framework\Http\Middlewares\SecurityHeaderMiddleware',
// Results
'App\Framework\Router\Result\JsonResult',
'App\Framework\Router\Result\ViewResult',
'App\Framework\Router\Result\RedirectResult',
// View System
'App\Framework\View\Engine',
'App\Framework\View\ComponentRenderer',
'App\Framework\View\Loading\TemplateLoader',
// Cache System
'App\Framework\Cache\GeneralCache',
'App\Framework\Cache\Driver\RedisCache',
'App\Framework\Cache\Driver\InMemoryCache',
// Performance
'App\Framework\Performance\PerformanceCollector',
'App\Framework\Performance\PerformanceService',
// Config
'App\Framework\Config\AppConfig',
// Logging
'App\Framework\Logging\Logger',
];
// Preload nur wenn OPcache aktiv ist
if (function_exists('opcache_compile_file')) {
foreach ($coreClasses as $className) {
try {
// Skip empty class names
if (empty($className)) {
continue;
}
if (class_exists($className, false)) {
continue; // Bereits geladen
}
// Klasse über Autoloader laden
class_exists($className);
} catch (Throwable $e) {
// Fehler beim Preloading ignorieren (Klasse existiert möglicherweise nicht)
continue;
}
}
// Zusätzlich: Alle PHP-Dateien im Framework-Verzeichnis preloaden
$frameworkDir = __DIR__ . '/Framework';
if (is_dir($frameworkDir)) {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($frameworkDir, RecursiveDirectoryIterator::SKIP_DOTS)
);
foreach ($iterator as $file) {
if ($file->getExtension() === 'php' && $file->isFile()) {
try {
opcache_compile_file($file->getPathname());
} catch (Throwable $e) {
// Fehler beim Kompilieren ignorieren
continue;
}
}
}
}
}