Önbellek
webman/cache, symfony/cache tabanlı bir önbellek bileşenidir; hem coroutine hem de coroutine olmayan ortamlarla uyumludur ve bağlantı havuzu destekler.
Kurulum
composer require -W webman/cache
Örnek
<?php
namespace app\controller;
use support\Request;
use support\Cache;
class UserController
{
public function db(Request $request)
{
$key = 'test_key';
Cache::set($key, rand());
return response(Cache::get($key));
}
}
Yapılandırma Dosyası Konumu
Yapılandırma dosyası config/cache.php konumundadır. Yoksa elle oluşturun.
Yapılandırma Dosyası İçeriği
<?php
return [
'default' => 'file',
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache')
],
'redis' => [
'driver' => 'redis',
'connection' => 'default'
],
'array' => [
'driver' => 'array'
],
'apcu' => [
'driver' => 'apcu'
]
]
];
stores.driver dört sürücü destekler: file, redis, array ve apcu.
file sürücüsü
Varsayılan sürücü. Harici bağımlılığı yoktur. Süreçler arası önbellek paylaşımını destekler. Çok sunuculu paylaşımı desteklemez.
array sürücüsü
Bellekte depolama; en iyi performans ancak bellek tüketir. Süreçler veya sunucular arası paylaşımı desteklemez. Süreç yeniden başlatıldığında veri kaybolur. Önbellek hacmi küçük projeler için uygundur.
apcu sürücüsü
Bellekte depolama. Performans array sürücüsünden sonra gelir. Süreçler arası önbellek paylaşımını destekler. Çok sunuculu paylaşımı desteklemez. Süreç yeniden başlatıldığında veri kaybolur. Önbellek hacmi küçük projeler için uygundur.
APCu eklentisi kurulmuş ve etkinleştirilmiş olmalıdır. Sık önbellek yazma/silme senaryoları için önerilmez; belirgin performans düşüşüne yol açabilir.
redis sürücüsü
webman/redis bileşenine bağımlıdır. Süreçler ve sunucular arası önbellek paylaşımını destekler.
stores.redis.connection
stores.redis.connection, config/redis.php içinde tanımlanan anahtara karşılık gelir. Redis kullanıldığında bağlantı havuzu ayarları dahil webman/redis yapılandırması yeniden kullanılır.
config/redis.php içinde önbellek için ayrı bir Redis yapılandırması eklenmesi önerilir, örneğin:
<?php
return [
'default' => [
'password' => 'abc123',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
],
'cache' => [ // <==== Yeni ekle
'password' => 'abc123',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 1,
'prefix' => 'webman_cache-',
]
];
Ardından stores.redis.connection değerini cache olarak ayarlayın. Son config/cache.php dosyası şuna benzer:
<?php
return [
'default' => 'redis', // <====
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache')
],
'redis' => [
'driver' => 'redis',
'connection' => 'cache' // <====
],
'array' => [
'driver' => 'array'
]
]
];
Depo Değiştirme
Farklı sürücüler kullanmak için depoyu manuel olarak değiştirebilirsiniz, örneğin:
Cache::store('redis')->set('key', 'value');
Cache::store('array')->set('key', 'value');
İpucu
Önbellek anahtar adları PSR-6 ile sınırlıdır ve{}()/\@:karakterlerinden herhangi birini içeremez.symfony/cache7.2.4 itibarıyla bu kontrol PHP ini ayarızend.assertions=-1ile geçici olarak atlanabilir.
Diğer Önbellek Bileşenlerini Kullanma
ThinkCache bileşeni için Diğer Veritabanları bölümüne bakın.