Система подій кешу в Laravel дозволяє детально моніторити операції кешування у вашій аплікації. Ці події надають корисну інформацію про продуктивність кешу та його використання.
Laravel генерує специфічні події для різних дій з кешем:
use Illuminate\Cache\Events\{
CacheHit,
CacheMissed,
KeyForgotten,
KeyWritten
};
Ви можете створювати прослуховувачі для цих подій, щоб збирати дані про продуктивність або виконувати додаткові дії залежно від поведінки кешу.
use Illuminate\Support\Facades\Event;
Event::listen(function (CacheHit $event) {
Log::info("Cache hit for key: {$event->key}");
});
Event::listen(function (CacheMissed $event) {
Log::info("Cache miss for key: {$event->key}");
});
Ось як виглядає всебічна система аналітики кешу, що відстежує всі операції з кешем:
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\DB;
class CacheAnalyticsService
{
public function registerListeners()
{
Event::listen(function (CacheHit $event) {
$this->trackCacheOperation('hit', [
'cache_key' => $event->key,
'store' => $event->store ?? 'default',
'timestamp' => now()
]);
});
Event::listen(function (CacheMissed $event) {
$this->trackCacheOperation('miss', [
'cache_key' => $event->key,
'store' => $event->store ?? 'default',
'timestamp' => now()
]);
});
Event::listen(function (KeyWritten $event) {
$this->trackCacheOperation('write', [
'cache_key' => $event->key,
'expiry_seconds' => $event->seconds,
'store' => $event->store ?? 'default',
'timestamp' => now()
]);
});
Event::listen(function (KeyForgotten $event) {
$this->trackCacheOperation('delete', [
'cache_key' => $event->key,
'store' => $event->store ?? 'default',
'timestamp' => now()
]);
});
}
private function trackCacheOperation(string $operation, array $metadata)
{
DB::table('cache_analytics')->insert([
'operation_type' => $operation,
'cache_key' => $metadata['cache_key'],
'store_name' => $metadata['store'],
'expiry_time' => $metadata['expiry_seconds'] ?? null,
'recorded_at' => $metadata['timestamp']
]);
}
}
Слід врахувати, що моніторинг подій може вплинути на продуктивність. Ви можете вимкнути його для конкретного кеш-зберігання у вашій конфігурації за потреби