Da V9 mit früheren Versionen relativ nicht kompatibel ist, lesen Sie bitte die Migrationsanleitung sorgfältig durch, um eine möglichst reibungslose Migration zu gewährleisten. Eine der größten Änderungen ist das Konfigurationssystem, das jetzt ein Objekt ist, das das primitive Array ersetzt, das wir damals zur Implementierung verwendet haben. Bitte beachten Sie außerdem, dass V9 mindestens PHP 8 oder höher erfordert, um ordnungsgemäß zu funktionieren.
Weitere Informationen im Wiki Die Einfachheit der Abstraktion: Eine Klasse für viele Backend-Cache. Sie müssen Ihren Code nicht viele Male neu schreiben.
Schlagen Sie gerne einen Fahrer vor, indem Sie eine neue Pull-Anfrage stellen. Sie sind herzlich willkommen!
Regelmäßige Fahrer | Hochleistungstreiber | Entwicklungstreiber (Kern) | Cluster-aggregierte Treiber (Kern) |
---|---|---|---|
Apcu (Kern)(APC-Unterstützung entfernt) | Arangodb (Erweiterung) | Devnull | FullReplicationCluster |
Dynamodb (Erweiterung) | Cassandra (PHP-Erweiterung wird von Datastax nicht mehr gepflegt, könnte in Version 10 veraltet sein) | Devrandom | SemiReplicationCluster |
Files (Kern) | CouchBasev3 (Kern)(Wird ab Version 10 veraltet sein) | Memory (Früher Memstatic genannt) | MasterSlaveReplicationCluster |
Firestore (Erweiterung) | CouchBasev4 (Erweiterung) | RandomReplicationCluster | |
Leveldb (Kern) | Couchdb (Erweiterung) | ||
Memcache(d) (Kern) | Mongodb (Erweiterung) | ||
Solr (Erweiterung) | Predis (Kern) | ||
Sqlite (Kern) | Ravendb _(Erweiterung) | ||
Wincache (Kern)(Ab Version 9.2 veraltet , wird ab Version 10 entfernt) | Relay (Bis Ende 2024) | ||
Zend Disk Cache (Kern) | Redis / RedisCluster (Kern) | ||
Ssdb (Kern) | |||
Zend Memory Cache (Kern) |
* Treiberbeschreibungen verfügbar in DOCS/DRIVERS.md
Ab Version 9.2 wurde eine neue Couchbase-Erweiterung veröffentlicht: Couchbasev4. Außerdem wurde eine neue Treibererweiterung hinzugefügt: Ravendb
. Der Treiber wird in der Funktion aktiv weiterentwickelt , um eine bessere, feinkörnigere Konfiguration zu ermöglichen. Diese neue Erweiterung ist neben einigen anderen der Beginn einer neuen Ära für Phpfastcache:
Viele Treiber wurden als eigenständige Erweiterung vom Kern in ihr eigenes Unter-Repository verschoben: Arangodb
, Couchdb
, Dynamodb
, Firestore
, Mongodb
, Solr
.
Sie können einfach über Composer hinzugefügt werden, z. B.: composer install phpfastcache/couchbasev4-extension
Couchbasev3
bleibt jedoch aus Kompatibilitätsgründen im Kern , wird aber veraltet sein.
PHPfastcache wurde im Laufe der Jahre mit drei Hauptzielen entwickelt:
PHPfastcache bietet Ihnen viele nützliche APIs:
Verfahren | Zurückkehren | Beschreibung |
---|---|---|
addTag($tagName) | ExtendedCacheItemInterface | Fügt ein Tag hinzu |
addTags(array $tagNames) | ExtendedCacheItemInterface | Fügt mehrere Tags hinzu |
append($data) | ExtendedCacheItemInterface | Hängt Daten an einen String oder ein Array an (Push) |
decrement($step = 1) | ExtendedCacheItemInterface | Überflüssiger Witz... |
expiresAfter($ttl) | ExtendedCacheItemInterface | Ermöglicht Ihnen, die Lebensdauer eines Eintrags zu verlängern, ohne seinen Wert zu ändern (früher bekannt als touch()). |
expiresAt($expiration) | ExtendedCacheItemInterface | Legt die Ablaufzeit für dieses Cache-Element fest (als DateTimeInterface-Objekt). |
get() | mixed | Der Getter gibt natürlich Ihr Cache-Objekt zurück |
getCreationDate() | DatetimeInterface | Ruft das Erstellungsdatum für dieses Cache-Element ab (als DateTimeInterface-Objekt) * |
getDataAsJsonString() | string | Geben Sie die Daten als gut formatierte JSON-Zeichenfolge zurück |
getEncodedKey() | string | Gibt die endgültige und interne Elementkennung (Schlüssel) zurück, die im Allgemeinen für Debug-Zwecke verwendet wird |
getExpirationDate() | ExtendedCacheItemInterface | Ruft das Ablaufdatum als Datetime-Objekt ab |
getKey() | string | Gibt den Artikelbezeichner (Schlüssel) zurück. |
getLength() | int | Ruft die Datenlänge ab, wenn es sich bei den Daten um eine Zeichenfolge, ein Array oder um Objekte handelt, die Countable Schnittstelle implementieren. |
getModificationDate() | DatetimeInterface | Ruft das Änderungsdatum für dieses Cache-Element ab (als DateTimeInterface-Objekt) * |
getTags() | string[] | Ruft die Tags ab |
hasTag(string $tagName) | bool | Überprüfen Sie, ob das Cache-Element ein bestimmtes Tag enthält |
hasTags(array $tagNames, int $strategy): bool | bool | Überprüfen Sie, ob das Cache-Element ein oder mehrere bestimmte Tags mit optionaler Strategie enthält (Standard ist TAG_STRATEGY_ONE). |
isTagged(): bool | bool | Überprüfen Sie, ob das Cache-Element mindestens ein Tag hat (v9.2) |
getTagsAsString($separator = ', ') | string | Ruft die Daten als durch $separator getrennte Zeichenfolge ab |
getTtl() | int | Ruft die verbleibende Lebenszeit als Ganzzahl ab |
increment($step = 1) | ExtendedCacheItemInterface | Damit wir mit einem ganzzahligen Element rechnen können |
isEmpty() | bool | Überprüft, ob die Daten trotz des Hit/Miss-Status leer sind oder nicht. |
isExpired() | bool | Überprüft, ob Ihr Cache-Eintrag abgelaufen ist |
isHit() | bool | Überprüft, ob Ihr Cache-Eintrag vorhanden und noch gültig ist. Dies entspricht isset(). |
isNull() | bool | Überprüft, ob die Daten trotz des Hit/Miss-Status null sind oder nicht. |
prepend($data) | ExtendedCacheItemInterface | Stellt Daten einem String oder einem Array voran (Verschiebung aufheben) |
removeTag($tagName) | ExtendedCacheItemInterface | Entfernt ein Tag |
removeTags(array $tagNames) | ExtendedCacheItemInterface | Entfernt mehrere Tags |
set($value) | ExtendedCacheItemInterface | Für diejenigen, die es verpasst haben, kann der Setter alles außer Ressourcen oder Nicht-Serialisierer-Objekten sein (z. B. PDO-Objekte, Dateizeiger usw.). |
setCreationDate($expiration) | DatetimeInterface | Legt das Erstellungsdatum für dieses Cache-Element fest (als DateTimeInterface-Objekt) * |
setEventManager($evtMngr) | ExtendedCacheItemInterface | Legt den Event-Manager fest |
setExpirationDate() | ExtendedCacheItemInterface | Alias von ExpireAt() (für mehr Codelogik) |
setModificationDate($expiration) | DatetimeInterface | Legt das Änderungsdatum für dieses Cache-Element fest (als DateTimeInterface-Objekt) * |
setTags(array $tags) | ExtendedCacheItemInterface | Setzt mehrere Tags |
* Erfordert die Aktivierung der Konfigurationsanweisung „itemDetailedDate“, andernfalls wird eine LogicException ausgelöst |
Methoden (in alphabetischer Reihenfolge) | Zurückkehren | Beschreibung |
---|---|---|
appendItemsByTag($tagName, $data) | bool | Fügt Elemente durch ein Tag hinzu |
appendItemsByTags(array $tagNames, $data) | bool | Fügt Elemente mit einem von mehreren Tag-Namen hinzu |
attachItem($item) | void | Fügt ein Element (erneut) dem Pool hinzu |
clear() | bool | Ermöglicht Ihnen, den Cache vollständig zu leeren und von vorne zu starten |
commit() | bool | Behält alle zurückgestellten Cache-Elemente bei |
decrementItemsByTag($tagName, $step = 1) | bool | Dekrementiert Elemente um ein Tag |
decrementItemsByTags(array $tagNames, $step = 1) | bool | Dekrementiert Elemente um einen von mehreren Tag-Namen |
deleteItem($key) | bool | Löscht ein Element |
deleteItems(array $keys) | bool | Löscht ein oder mehrere Elemente |
deleteItemsByTag($tagName) | bool | Löscht Elemente nach einem Tag |
deleteItemsByTags(array $tagNames, int $strategy) | bool | Löscht Elemente nach einem von mehreren Tag-Namen |
detachItem($item) | void | Trennt ein Element vom Pool |
getConfig() | ConfigurationOption | Gibt das Konfigurationsobjekt zurück |
getConfigOption($optionName); | mixed | Gibt einen Konfigurationswert über seinen Schlüssel $optionName zurück |
getDefaultConfig() | ConfigurationOption | Gibt das Standardkonfigurationsobjekt zurück (wird von der Objektinstanz nicht geändert) |
getDriverName() | string | Gibt den aktuellen Treibernamen zurück (ohne Namespace) |
getEventManager() | EventManagerInterface | Ruft den Event-Manager ab |
getHelp() | string | Bietet eine sehr grundlegende Hilfe für einen bestimmten Treiber |
getInstanceId() | string | Gibt die Instanz-ID zurück |
getItem($key) | ExtendedCacheItemInterface | Ruft ein Element ab und gibt ein leeres Element zurück, wenn es nicht gefunden wird |
getItems(array $keys) | ExtendedCacheItemInterface[] | Ruft ein oder mehrere Elemente ab und gibt ein Array von Elementen zurück. Ab Version 9.2 wurde diese Methode intern verbessert. |
getAllItems(string $pattern = '') | ExtendedCacheItemInterface[] | (v9.2) Ruft alle Cache-Elemente mit einem festen Limit von 9999 Elementen ab. Die Unterstützung ist auf einige Treiber beschränkt |
getItemsAsJsonString(array $keys) | string | Gibt einen JSON-String zurück, der ein Array von Elementen darstellt |
getItemsByTag($tagName, $strategy) | ExtendedCacheItemInterface[] | Gibt Elemente nach einem Tag zurück |
getItemsByTags(array $tagNames, $strategy) | ExtendedCacheItemInterface[] | Gibt Elemente nach einem von mehreren Tag-Namen zurück |
getItemsByTagsAsJsonString(array $tagNames, $strategy) | string | Gibt einen JSON-String zurück, der ein Array entsprechender Elemente darstellt |
getStats() | DriverStatistic | Gibt die Cache-Statistiken als Objekt zurück, nützlich zum Überprüfen des vom Cache verwendeten Speicherplatzes usw. |
hasEventManager() | bool | Überprüfen Sie den Eventmanager |
hasItem($key) | bool | Testet, ob ein Element vorhanden ist |
incrementItemsByTag($tagName, $step = 1, $strategy) | bool | Erhöht Elemente um ein Tag |
incrementItemsByTags(array $tagNames, $step = 1, $strategy) | bool | Erhöht Elemente um einen von mehreren Tag-Namen |
isAttached($item) | bool | Überprüfen Sie, ob ein Artikel (noch) angehängt ist |
prependItemsByTag($tagName, $data, $strategy) | bool | Stellt Elementen ein Tag voran |
prependItemsByTags(array $tagNames, $data, $strategy) | bool | Stellt Elementen einen von mehreren Tag-Namen voran |
save(CacheItemInterface $item) | bool | Behält ein Cache-Element sofort bei |
saveDeferred(CacheItemInterface $item) | bool | Legt ein Cache-Element fest, das später beibehalten werden soll |
saveMultiple(...$items) | bool | Behält mehrere Cache-Elemente sofort bei |
setEventManager(EventManagerInterface $evtMngr) | ExtendedCacheItemPoolInterface | Legt den Event-Manager fest |
in V8 : Mehrere Strategien ( $strategy
) werden jetzt für das Tagging unterstützt:
TaggableCacheItemPoolInterface::TAG_STRATEGY_ONE
können Sie Cache-Elemente von mindestens EINEM der angegebenen übereinstimmenden Tags abrufen. Standardverhalten.TaggableCacheItemPoolInterface::TAG_STRATEGY_ALL
können Sie Cache-Elemente nach ALLEN angegebenen übereinstimmenden Tags abrufen (das Cache-Element kann zusätzliche Tags haben).TaggableCacheItemPoolInterface::TAG_STRATEGY_ONLY
können Sie Cache-Elemente NUR mit den angegebenen übereinstimmenden Tags abrufen (das Cache-Element kann keine zusätzlichen Tags haben).Es unterstützt auch mehrere Aufrufe, Tagging und das Einrichten von Ordnern für das Caching. Weitere Informationen finden Sie in unseren Beispielordnern.
PHPfastcache bietet eine Klasse, die Ihnen grundlegende Informationen zu Ihrer PHPfastcache-Installation bietet
PhpfastcacheApi::GetVersion();
PhpfastcacheApi::getChangelog();
PhpfastcacheApi::getPhpfastcacheVersion();
PhpfastcacheApi::getPhpfastcacheChangelog();
Gute Nachrichten, ab V6 wird ein Psr16-Adapter bereitgestellt, um den Cache mithilfe sehr einfacher Getter/Setter möglichst einfach zu halten:
get($key, $default = null);
set($key, $value, $ttl = null);
delete($key);
clear();
getMultiple($keys, $default = null);
setMultiple($values, $ttl = null);
deleteMultiple($keys);
has($key);
Grundlegende Verwendung:
<?php
use Phpfastcache Helper Psr16Adapter ;
$ defaultDriver = ' Files ' ;
$ Psr16Adapter = new Psr16Adapter ( $ defaultDriver );
if (! $ Psr16Adapter -> has ( ' test-key ' )){
// Setter action
$ data = ' lorem ipsum ' ;
$ Psr16Adapter -> set ( ' test-key ' , ' lorem ipsum ' , 300 ); // 5 minutes
} else {
// Getter action
$ data = $ Psr16Adapter -> get ( ' test-key ' );
}
/**
* Do your stuff with $data
*/
Intern ruft der Psr16-Adapter über den Cache-Manager die PHPfastcache-API auf.
Ab V6 stellt PHPfastcache einen Ereignismechanismus zur Verfügung. Sie können ein Ereignis abonnieren, indem Sie einen Abschluss an ein aktives Ereignis übergeben:
<?php
use Phpfastcache EventManager ;
/**
* Bind the event callback
*/
EventManager:: getInstance ()-> onCacheGetItem ( function ( ExtendedCacheItemPoolInterface $ itemPool , ExtendedCacheItemInterface $ item ){
$ item -> set ( ' [HACKED BY EVENT] ' . $ item -> get ());
});
Die Bindung eines Ereignisrückrufs kann aufgehoben werden, Sie MÜSSEN dem Rückruf jedoch zuvor einen Namen geben:
<?php
use Phpfastcache EventManager ;
/**
* Bind the event callback
*/
EventManager:: getInstance ()-> onCacheGetItem ( function ( ExtendedCacheItemPoolInterface $ itemPool , ExtendedCacheItemInterface $ item ){
$ item -> set ( ' [HACKED BY EVENT] ' . $ item -> get ());
}, ' myCallbackName ' );
/**
* Unbind the event callback
*/
EventManager:: getInstance ()-> unbindEventCallback ( ' onCacheGetItem ' , ' myCallbackName ' );
Ab der V8 können Sie einfach jedes Event von Phpfastcache abonnieren.
Weitere Informationen zur Umsetzung und den Veranstaltungen finden Sie im Wiki
Ab V6 stellt PHPfastcache einige Helfer zur Verfügung, die Ihren Code einfacher machen.
Möge es in Zukunft noch mehr geben, zögern Sie nicht, einen Beitrag zu leisten!
Schauen Sie sich das WIKI an, um zu erfahren, wie Sie die aggregierte Cache-Clustering-Funktion implementieren.
composer require phpfastcache/phpfastcache
<?php
use Phpfastcache CacheManager ;
use Phpfastcache Config ConfigurationOption ;
// Setup File Path on your config files
// Please note that as of the V6 .1 the "path" config
// can also be used for Unix sockets ( Redis , Memcache , etc )
CacheManager:: setDefaultConfig ( new ConfigurationOption ([
' path ' => ' /var/www/phpfastcache.com/dev/tmp ' , // or in windows "C:/tmp/"
]));
// In your class , function , you can call the Cache
$ InstanceCache = CacheManager:: getInstance ( ' files ' );
/**
* Try to get $products from Caching First
* product_page is "identity keyword";
*/
$ key = " product_page " ;
$ CachedString = $ InstanceCache -> getItem ( $ key );
$ your_product_data = [
' First product ' ,
' Second product ' ,
' Third product '
/* ... */
];
if (! $ CachedString -> isHit ()) {
$ CachedString -> set ( $ your_product_data )-> expiresAfter ( 5 ); //in seconds , also accepts Datetime
$ InstanceCache -> save ( $ CachedString ); // Save the cache item just like you do with doctrine and entities
echo ' FIRST LOAD // WROTE OBJECT TO CACHE // RELOAD THE PAGE AND SEE // ' ;
echo $ CachedString -> get ();
} else {
echo ' READ FROM CACHE // ' ;
echo $ CachedString -> get ()[ 0 ]; // Will print ' First product'
}
/**
* use your products here or return them;
*/
echo implode ( ' <br /> ' , $ CachedString -> get ()); // Will echo your product list
Für neugierige Entwickler gibt es hier viele weitere Beispiele.
Haben Sie ein Problem gefunden oder eine Idee? Kommen Sie vorbei und lassen Sie es uns wissen!