Files
michaelschiemer/src/Framework/ExceptionHandling/ExceptionHandlerManager.php
Michael Schiemer 36ef2a1e2c
Some checks failed
🚀 Build & Deploy Image / Determine Build Necessity (push) Failing after 10m14s
🚀 Build & Deploy Image / Build Runtime Base Image (push) Has been skipped
🚀 Build & Deploy Image / Build Docker Image (push) Has been skipped
🚀 Build & Deploy Image / Run Tests & Quality Checks (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Staging (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Production (push) Has been skipped
Security Vulnerability Scan / Check for Dependency Changes (push) Failing after 11m25s
Security Vulnerability Scan / Composer Security Audit (push) Has been cancelled
fix: Gitea Traefik routing and connection pool optimization
- Remove middleware reference from Gitea Traefik labels (caused routing issues)
- Optimize Gitea connection pool settings (MAX_IDLE_CONNS=30, authentication_timeout=180s)
- Add explicit service reference in Traefik labels
- Fix intermittent 504 timeouts by improving PostgreSQL connection handling

Fixes Gitea unreachability via git.michaelschiemer.de
2025-11-09 14:46:15 +01:00

54 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Framework\ExceptionHandling;
/**
* Manages global exception, error, and shutdown handlers
*
* Supports early registration with basic handlers before Discovery,
* and replacement with full handlers after Discovery.
*/
final readonly class ExceptionHandlerManager
{
public function __construct(
private ErrorHandlerInterface $errorHandler,
private ExceptionHandler $exceptionHandler,
private ShutdownHandlerInterface $shutdownHandler
) {
$this->registerErrorHandler($this->errorHandler);
$this->registerExceptionHandler($this->exceptionHandler);
$this->registerShutdownHandler($this->shutdownHandler);
}
/**
* Create ExceptionHandlerManager with basic handlers for early registration
*
* This factory method creates a manager with minimal handlers that don't
* require full dependencies. Useful for registering handlers before Discovery.
*/
public static function createWithBasicHandlers(): self
{
return new self(
new BasicErrorHandler(),
new BasicGlobalExceptionHandler(),
new BasicShutdownHandler()
);
}
public function registerExceptionHandler(ExceptionHandler $handler): void
{
set_exception_handler($handler->handle(...));
}
private function registerErrorHandler(ErrorHandlerInterface $handler): void
{
set_error_handler($handler->handle(...), E_ALL);
}
public function registerShutdownHandler(ShutdownHandlerInterface $handler): void
{
register_shutdown_function($handler->handle(...));
}
}