Karena V9 relatif tidak kompatibel dengan versi sebelumnya, harap baca dengan cermat panduan migrasi untuk memastikan migrasi Anda semulus mungkin. Salah satu perubahan terbesar adalah sistem konfigurasi yang kini menjadi objek yang menggantikan array primitif yang biasa kami implementasikan saat itu. Perlu diketahui juga bahwa V9 memerlukan setidaknya PHP 8 atau lebih tinggi agar dapat berfungsi dengan baik.
Informasi lebih lanjut di Wiki Kesederhanaan abstraksi: Satu kelas untuk banyak cache backend. Anda tidak perlu menulis ulang kode Anda berkali-kali.
Jangan ragu untuk mengusulkan pengemudi dengan membuat Permintaan Tarik baru, dipersilakan!
Pengemudi biasa | Pengemudi berkinerja tinggi | Penggerak pengembangan (Inti) | Driver Agregat Cluster (Inti) |
---|---|---|---|
Apcu (Inti)(Dukungan APC dihapus) | Arangodb (Ekstensi) | Devnull | FullReplicationCluster |
Dynamodb (Ekstensi) | Cassandra (Ekstensi PHP tidak lagi dikelola oleh Datastax, mungkin tidak digunakan lagi di v10) | Devrandom | SemiReplicationCluster |
Files (Inti) | CouchBasev3 (Inti)(Tidak akan digunakan lagi mulai v10) | Memory (Sebelumnya bernama Memstatic ) | MasterSlaveReplicationCluster |
Firestore (Ekstensi) | CouchBasev4 (Ekstensi) | RandomReplicationCluster | |
Leveldb (Inti) | Couchdb (Ekstensi) | ||
Memcache(d) (Inti) | Mongodb (Ekstensi) | ||
Solr (Ekstensi) | Predis (Inti) | ||
Sqlite (Inti) | Ravendb _(Ekstensi) | ||
Wincache (Inti)( Tidak digunakan lagi pada v9.2, akan dihapus pada v10) | Relay (Pada akhir tahun 2024) | ||
Zend Disk Cache (Inti) | Redis / RedisCluster (Inti) | ||
Ssdb (Inti) | |||
Zend Memory Cache (Inti) |
* Deskripsi driver tersedia di DOCS/DRIVERS.md
Pada v9.2, ekstensi Couchbase baru telah dirilis: Couchbasev4 Juga ekstensi driver baru telah ditambahkan: Ravendb
. Pengemudi akan dikembangkan secara aktif dalam fitur untuk memungkinkan konfigurasi yang lebih baik. Ekstensi baru ini adalah awal dari era baru untuk Phpfastcache bersama dengan beberapa ekstensi lainnya:
Banyak driver telah dipindahkan dari inti ke sub-repositorinya sendiri sebagai ekstensi mandiri: Arangodb
, Couchdb
, Dynamodb
, Firestore
, Mongodb
, Solr
.
Mereka dapat dengan mudah ditambahkan melalui komposer, misalnya: composer install phpfastcache/couchbasev4-extension
Namun Couchbasev3
akan tetap berada di inti karena alasan kompatibilitas tetapi tidak digunakan lagi.
Phpfastcache telah dikembangkan selama bertahun-tahun dengan 3 tujuan utama:
Phpfastcache memberi Anda banyak API yang berguna:
Metode | Kembali | Keterangan |
---|---|---|
addTag($tagName) | ExtendedCacheItemInterface | Menambahkan tanda |
addTags(array $tagNames) | ExtendedCacheItemInterface | Menambahkan banyak tag |
append($data) | ExtendedCacheItemInterface | Menambahkan data ke string atau array (push) |
decrement($step = 1) | ExtendedCacheItemInterface | Lelucon yang berlebihan... |
expiresAfter($ttl) | ExtendedCacheItemInterface | Memungkinkan Anda memperpanjang masa pakai entri tanpa mengubah nilainya (sebelumnya dikenal sebagai touch()) |
expiresAt($expiration) | ExtendedCacheItemInterface | Menetapkan waktu kedaluwarsa untuk item cache ini (sebagai objek DateTimeInterface) |
get() | mixed | Pengambil, tentu saja, mengembalikan objek cache Anda |
getCreationDate() | DatetimeInterface | Mendapatkan tanggal pembuatan item cache ini (sebagai objek DateTimeInterface) * |
getDataAsJsonString() | string | Kembalikan data sebagai string json yang diformat dengan baik |
getEncodedKey() | string | Mengembalikan pengidentifikasi item final dan internal (kunci), umumnya digunakan untuk tujuan debug |
getExpirationDate() | ExtendedCacheItemInterface | Mendapatkan tanggal kedaluwarsa sebagai objek Datetime |
getKey() | string | Mengembalikan pengidentifikasi item (kunci) |
getLength() | int | Mendapatkan panjang data jika data berupa string, array, atau objek yang mengimplementasikan antarmuka Countable . |
getModificationDate() | DatetimeInterface | Mendapatkan tanggal modifikasi untuk item cache ini (sebagai objek DateTimeInterface) * |
getTags() | string[] | Mendapatkan tagnya |
hasTag(string $tagName) | bool | Periksa apakah item cache berisi satu tag tertentu |
hasTags(array $tagNames, int $strategy): bool | bool | Periksa apakah item cache berisi satu atau lebih tag spesifik dengan strategi opsional (default pada TAG_STRATEGY_ONE) |
isTagged(): bool | bool | Periksa apakah item cache memiliki setidaknya satu tag (v9.2) |
getTagsAsString($separator = ', ') | string | Mendapatkan data sebagai string yang dipisahkan oleh $separator |
getTtl() | int | Mendapatkan sisa Time To Live sebagai bilangan bulat |
increment($step = 1) | ExtendedCacheItemInterface | Untuk memungkinkan kita mengandalkan item bilangan bulat |
isEmpty() | bool | Mengecek apakah data kosong atau tidak meskipun berstatus hit/miss. |
isExpired() | bool | Memeriksa apakah entri cache Anda kedaluwarsa |
isHit() | bool | Memeriksa apakah entri cache Anda ada dan masih valid, itu setara dengan isset() |
isNull() | bool | Memeriksa apakah datanya null atau tidak meskipun berstatus hit/miss. |
prepend($data) | ExtendedCacheItemInterface | Mempersiapkan data ke string atau array (unshift) |
removeTag($tagName) | ExtendedCacheItemInterface | Menghapus tag |
removeTags(array $tagNames) | ExtendedCacheItemInterface | Menghapus banyak tag |
set($value) | ExtendedCacheItemInterface | Penyetelnya, bagi yang melewatkannya, bisa berupa apa saja kecuali sumber daya atau objek non-serializer (misal: objek PDO, penunjuk file, dll). |
setCreationDate($expiration) | DatetimeInterface | Menetapkan tanggal pembuatan item cache ini (sebagai objek DateTimeInterface) * |
setEventManager($evtMngr) | ExtendedCacheItemInterface | Menetapkan manajer acara |
setExpirationDate() | ExtendedCacheItemInterface | Alias dari expiredAt() (untuk logika kode lebih lanjut) |
setModificationDate($expiration) | DatetimeInterface | Menetapkan tanggal modifikasi untuk item cache ini (sebagai objek DateTimeInterface) * |
setTags(array $tags) | ExtendedCacheItemInterface | Menetapkan beberapa tag |
* Memerlukan direktif konfigurasi "itemDetailedDate" untuk diaktifkan, jika tidak, LogicException akan dilempar |
Metode (Berdasarkan Urutan Abjad) | Kembali | Keterangan |
---|---|---|
appendItemsByTag($tagName, $data) | bool | Menambahkan item dengan tag |
appendItemsByTags(array $tagNames, $data) | bool | Menambahkan item dengan salah satu dari beberapa nama tag |
attachItem($item) | void | (Re-)menempelkan item ke kumpulan |
clear() | bool | Memungkinkan Anda mengosongkan cache sepenuhnya dan memulai ulang dari awal |
commit() | bool | Mempertahankan item cache apa pun yang ditangguhkan |
decrementItemsByTag($tagName, $step = 1) | bool | Mengurangi item berdasarkan tag |
decrementItemsByTags(array $tagNames, $step = 1) | bool | Mengurangi item dengan salah satu dari beberapa nama tag |
deleteItem($key) | bool | Menghapus item |
deleteItems(array $keys) | bool | Menghapus satu atau lebih item |
deleteItemsByTag($tagName) | bool | Menghapus item berdasarkan tag |
deleteItemsByTags(array $tagNames, int $strategy) | bool | Menghapus item dengan salah satu dari beberapa nama tag |
detachItem($item) | void | Melepaskan item dari kolam |
getConfig() | ConfigurationOption | Mengembalikan objek konfigurasi |
getConfigOption($optionName); | mixed | Mengembalikan nilai konfigurasi dengan kuncinya $optionName |
getDefaultConfig() | ConfigurationOption | Mengembalikan objek konfigurasi default (tidak diubah oleh instance objek) |
getDriverName() | string | Mengembalikan nama driver saat ini (tanpa namespace) |
getEventManager() | EventManagerInterface | Mendapatkan manajer acara |
getHelp() | string | Memberikan bantuan yang sangat mendasar untuk pengemudi tertentu |
getInstanceId() | string | Mengembalikan ID instans |
getItem($key) | ExtendedCacheItemInterface | Mengambil item dan mengembalikan item kosong jika tidak ditemukan |
getItems(array $keys) | ExtendedCacheItemInterface[] | Mengambil satu atau lebih item dan mengembalikan serangkaian item. Pada v9.2, perbaikan internal telah dilakukan pada metode ini. |
getAllItems(string $pattern = '') | ExtendedCacheItemInterface[] | (v9.2) Mengambil semua item cache dengan batas maksimum 9999 item. Dukungan terbatas pada beberapa driver |
getItemsAsJsonString(array $keys) | string | Mengembalikan string json yang mewakili array item |
getItemsByTag($tagName, $strategy) | ExtendedCacheItemInterface[] | Mengembalikan item dengan tag |
getItemsByTags(array $tagNames, $strategy) | ExtendedCacheItemInterface[] | Mengembalikan item dengan salah satu dari beberapa nama tag |
getItemsByTagsAsJsonString(array $tagNames, $strategy) | string | Mengembalikan string json yang mewakili array item yang sesuai |
getStats() | DriverStatistic | Mengembalikan statistik cache sebagai objek, berguna untuk memeriksa ruang disk yang digunakan oleh cache, dll. |
hasEventManager() | bool | Periksa manajer acara |
hasItem($key) | bool | Menguji apakah suatu item ada |
incrementItemsByTag($tagName, $step = 1, $strategy) | bool | Menambah item dengan tag |
incrementItemsByTags(array $tagNames, $step = 1, $strategy) | bool | Menambah item dengan salah satu dari beberapa nama tag |
isAttached($item) | bool | Verifikasi apakah suatu item (masih) terpasang |
prependItemsByTag($tagName, $data, $strategy) | bool | Menambahkan item dengan tag |
prependItemsByTags(array $tagNames, $data, $strategy) | bool | Menambahkan item dengan salah satu dari beberapa nama tag |
save(CacheItemInterface $item) | bool | Menyimpan item cache dengan segera |
saveDeferred(CacheItemInterface $item) | bool | Menyetel item cache untuk disimpan nanti |
saveMultiple(...$items) | bool | Mempertahankan beberapa item cache sekaligus |
setEventManager(EventManagerInterface $evtMngr) | ExtendedCacheItemPoolInterface | Menetapkan manajer acara |
di V8 : Beberapa strategi ( $strategy
) kini didukung untuk penandaan:
TaggableCacheItemPoolInterface::TAG_STRATEGY_ONE
memungkinkan Anda mendapatkan item cache dengan setidaknya SATU tag pencocokan yang ditentukan. Perilaku bawaan.TaggableCacheItemPoolInterface::TAG_STRATEGY_ALL
memungkinkan Anda mendapatkan item cache berdasarkan SEMUA tag pencocokan yang ditentukan (item cache dapat memiliki tag tambahan)TaggableCacheItemPoolInterface::TAG_STRATEGY_ONLY
memungkinkan Anda mendapatkan item cache HANYA dengan tag pencocokan yang ditentukan (item cache tidak boleh memiliki tag tambahan)Ini juga mendukung banyak panggilan, Penandaan, Folder Pengaturan untuk cache. Lihat contoh folder kami untuk informasi lebih lanjut.
Phpfastcache menyediakan kelas yang memberi Anda informasi dasar tentang instalasi Phpfastcache Anda
PhpfastcacheApi::GetVersion();
PhpfastcacheApi::getChangelog();
PhpfastcacheApi::getPhpfastcacheVersion();
PhpfastcacheApi::getPhpfastcacheChangelog();
Kabar baiknya, pada V6, adaptor Psr16 disediakan untuk menjaga cache tetap sederhana menggunakan getter/setter yang sangat mendasar:
get($key, $default = null);
set($key, $value, $ttl = null);
delete($key);
clear();
getMultiple($keys, $default = null);
setMultiple($values, $ttl = null);
deleteMultiple($keys);
has($key);
Penggunaan dasar:
<?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
*/
Secara internal, adaptor Psr16 memanggil Phpfastcache Api melalui pengelola cache.
Pada V6, Phpfastcache menyediakan mekanisme acara. Anda dapat berlangganan suatu acara dengan meneruskan Penutupan ke acara yang aktif:
<?php
use Phpfastcache EventManager ;
/**
* Bind the event callback
*/
EventManager:: getInstance ()-> onCacheGetItem ( function ( ExtendedCacheItemPoolInterface $ itemPool , ExtendedCacheItemInterface $ item ){
$ item -> set ( ' [HACKED BY EVENT] ' . $ item -> get ());
});
Panggilan balik acara dapat dilepas tetapi Anda HARUS memberikan nama untuk panggilan balik tersebut sebelumnya:
<?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 ' );
Pada V8 Anda cukup berlangganan setiap acara Phpfastcache.
Informasi lebih lanjut tentang implementasi dan acara tersedia di Wiki
Pada V6, Phpfastcache menyediakan beberapa bantuan untuk membuat kode Anda lebih mudah.
Semoga lebih banyak lagi yang akan datang di masa depan, jangan ragu untuk berkontribusi!
Kunjungi WIKI untuk mempelajari cara menerapkan fitur pengelompokan cache gabungan.
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
Bagi pengembang yang penasaran, ada banyak contoh lain yang tersedia di sini.
Menemukan masalah atau punya ide? Datang ke sini dan beri tahu kami!