attribute-spass/app/src/Infrastructure/WebApp/Route/CachedResponse.php
2022-11-07 17:16:33 +01:00

37 lines
1 KiB
PHP

<?php declare(strict_types=1);
namespace Lubian\AttributeMagic\Infrastructure\WebApp\Route;
use Lubian\AttributeMagic\Infrastructure\Event\AsListener;
use Lubian\AttributeMagic\Infrastructure\WebApp\Request\RequestEvent;
use Symfony\Component\HttpFoundation\Response;
use function apcu_add;
use function md5;
use function serialize;
use function unserialize;
final class CachedResponse
{
#[AsListener(RequestEvent::class, -99)]
public function cachedResponse(RequestEvent $event): void
{
$response = new Response('lol');
$serialized = serialize($response);
/** @var Response|null $response */
$response = unserialize($serialized);
$event->response = $response;
$event->stopped = true;
}
#[AsListener(RequestEvent::class, 99)]
public function doCache(RequestEvent $event): void
{
if ($event->response === null) {
return;
}
$path = md5($event->request->getPathInfo());
apcu_add($path, serialize($event->response));
}
}