نظرًا لأن الإصدار V9 غير متوافق نسبيًا مع الإصدارات السابقة، يرجى قراءة دليل الترحيل بعناية لضمان إجراء عملية ترحيل سلسة قدر الإمكان. أحد أكبر التغييرات هو نظام التكوين الذي أصبح الآن كائنًا يحل محل المصفوفة البدائية التي كنا نستخدمها في التنفيذ في ذلك الوقت. يرجى أيضًا ملاحظة أن الإصدار V9 يتطلب PHP 8 على الأقل أو أعلى ليعمل بشكل صحيح.
مزيد من المعلومات في Wiki بساطة التجريد: فئة واحدة للعديد من ذاكرة التخزين المؤقت الخلفية. لا تحتاج إلى إعادة كتابة التعليمات البرمجية الخاصة بك عدة مرات مرة أخرى.
لا تتردد في اقتراح سائق عن طريق تقديم طلب سحب جديد، فنحن نرحب بهم!
السائقين العاديين | برامج تشغيل عالية الأداء | محركات التنمية (الأساسية) | برامج التشغيل المجمعة (الأساسية) |
---|---|---|---|
Apcu (الأساسية)(تمت إزالة دعم APC) | Arangodb (امتداد) | Devnull | FullReplicationCluster |
Dynamodb (امتداد) | Cassandra (لم يعد Datastax يحتفظ بامتداد PHP، وربما تم إهماله في الإصدار 10) | Devrandom | SemiReplicationCluster |
Files (الأساسية) | CouchBasev3 (الأساسية)(سيتم إهماله اعتبارًا من الإصدار 10) | Memory (المسمى سابقًا Memstatic ) | MasterSlaveReplicationCluster |
Firestore (امتداد) | CouchBasev4 (ملحق) | RandomReplicationCluster | |
Leveldb (الأساسية) | Couchdb (امتداد) | ||
Memcache(d) (الأساسية) | Mongodb (امتداد) | ||
Solr (ملحق) | Predis (الأساسية) | ||
Sqlite (الأساسية) | Ravendb _(امتداد) | ||
Wincache (الأساسية)( تم إهماله اعتبارًا من الإصدار 9.2، وستتم إزالته اعتبارًا من الإصدار 10) | Relay (بحلول نهاية عام 2024) | ||
Zend Disk Cache (الأساسية) | Redis / RedisCluster (الأساسية) | ||
Ssdb (الأساسية) | |||
Zend Memory Cache (الأساسية) |
* أوصاف برنامج التشغيل متوفرة في DOCS/DRIVERS.md
اعتبارًا من الإصدار 9.2، تم إصدار ملحق Couchbase جديد: Couchbasev4 كما تمت إضافة ملحق برنامج تشغيل جديد: Ravendb
. سيتم تطوير برنامج التشغيل بشكل نشط في الميزة للسماح بتكوين أفضل للتفاصيل الدقيقة. يعد هذا الامتداد الجديد بداية حقبة جديدة لـ Phpfastcache بالإضافة إلى بعض الملحقات الأخرى:
تم نقل العديد من برامج التشغيل من المركز الأساسي إلى المستودع الفرعي الخاص بهم كامتداد مستقل: Arangodb
، Couchdb
، Dynamodb
، Firestore
، Mongodb
، Solr
.
يمكن إضافتها بسهولة من خلال الملحن، على سبيل المثال: composer install phpfastcache/couchbasev4-extension
ومع ذلك سيبقى Couchbasev3
في المركز لأسباب التوافق ولكن سيتم إهماله.
تم تطوير Phpfastcache على مر السنين لتحقيق ثلاثة أهداف رئيسية:
يوفر لك Phpfastcache الكثير من واجهات برمجة التطبيقات المفيدة:
طريقة | يعود | وصف |
---|---|---|
addTag($tagName) | ExtendedCacheItemInterface | يضيف علامة |
addTags(array $tagNames) | ExtendedCacheItemInterface | يضيف علامات متعددة |
append($data) | ExtendedCacheItemInterface | إلحاق البيانات بسلسلة أو مصفوفة (دفع) |
decrement($step = 1) | ExtendedCacheItemInterface | نكتة زائدة... |
expiresAfter($ttl) | ExtendedCacheItemInterface | يسمح لك بتمديد عمر الإدخال دون تغيير قيمته (المعروف سابقًا باسم touch()) |
expiresAt($expiration) | ExtendedCacheItemInterface | يضبط وقت انتهاء الصلاحية لعنصر ذاكرة التخزين المؤقت هذا (ككائن DateTimeInterface) |
get() | mixed | من الواضح أن المُحضر يُرجع كائن ذاكرة التخزين المؤقت الخاص بك |
getCreationDate() | DatetimeInterface | الحصول على تاريخ الإنشاء لعنصر ذاكرة التخزين المؤقت هذا (ككائن DateTimeInterface) * |
getDataAsJsonString() | string | قم بإرجاع البيانات كسلسلة json منسقة بشكل جيد |
getEncodedKey() | string | إرجاع معرف العنصر النهائي والداخلي (المفتاح)، والذي يستخدم بشكل عام لأغراض تصحيح الأخطاء |
getExpirationDate() | ExtendedCacheItemInterface | يحصل على تاريخ انتهاء الصلاحية ككائن Datetime |
getKey() | string | إرجاع معرف العنصر (المفتاح) |
getLength() | int | يحصل على طول البيانات إذا كانت البيانات عبارة عن سلسلة أو صفيف أو كائنات تقوم بتنفيذ واجهة Countable . |
getModificationDate() | DatetimeInterface | الحصول على تاريخ التعديل لعنصر ذاكرة التخزين المؤقت هذا (ككائن DateTimeInterface) * |
getTags() | string[] | يحصل على العلامات |
hasTag(string $tagName) | bool | تحقق مما إذا كان عنصر ذاكرة التخزين المؤقت يحتوي على علامة واحدة محددة |
hasTags(array $tagNames, int $strategy): bool | bool | تحقق مما إذا كان عنصر ذاكرة التخزين المؤقت يحتوي على علامة محددة واحدة أو أكثر باستخدام إستراتيجية اختيارية (الافتراضي هو TAG_STRATEGY_ONE) |
isTagged(): bool | bool | تحقق مما إذا كان عنصر ذاكرة التخزين المؤقت يحتوي على علامة واحدة على الأقل (الإصدار 9.2) |
getTagsAsString($separator = ', ') | string | يحصل على البيانات كسلسلة مفصولة بفاصل $ |
getTtl() | int | الحصول على الوقت المتبقي للعيش كعدد صحيح |
increment($step = 1) | ExtendedCacheItemInterface | للسماح لنا بالاعتماد على عنصر عدد صحيح |
isEmpty() | bool | يتحقق مما إذا كانت البيانات فارغة أم لا على الرغم من حالة الإصابة/الخطأ. |
isExpired() | bool | يتحقق مما إذا كانت صلاحية إدخال ذاكرة التخزين المؤقت الخاصة بك قد انتهت |
isHit() | bool | يتحقق مما إذا كان إدخال ذاكرة التخزين المؤقت موجودًا وما زال صالحًا، فهو يعادل isset() |
isNull() | bool | يتحقق مما إذا كانت البيانات فارغة أم لا على الرغم من حالة الإصابة/الفشل. |
prepend($data) | ExtendedCacheItemInterface | إضافة البيانات إلى سلسلة أو مصفوفة (إلغاء النقل) |
removeTag($tagName) | ExtendedCacheItemInterface | يزيل علامة |
removeTags(array $tagNames) | ExtendedCacheItemInterface | يزيل علامات متعددة |
set($value) | ExtendedCacheItemInterface | يمكن أن يكون أداة الضبط، بالنسبة لأولئك الذين فاتهم ذلك، أي شيء باستثناء الموارد أو كائن غير مُسلسل (على سبيل المثال: كائنات PDO، ومؤشرات الملفات، وما إلى ذلك). |
setCreationDate($expiration) | DatetimeInterface | يضبط تاريخ الإنشاء لعنصر ذاكرة التخزين المؤقت هذا (ككائن DateTimeInterface) * |
setEventManager($evtMngr) | ExtendedCacheItemInterface | يضبط مدير الحدث |
setExpirationDate() | ExtendedCacheItemInterface | الاسم المستعار لـexpireAt() (لمزيد من منطق التعليمات البرمجية) |
setModificationDate($expiration) | DatetimeInterface | يضبط تاريخ التعديل لعنصر ذاكرة التخزين المؤقت هذا (ككائن DateTimeInterface) * |
setTags(array $tags) | ExtendedCacheItemInterface | يعين علامات متعددة |
* يتطلب تمكين توجيه التكوين "itemDetailedDate"، وإلا سيتم طرح LogicException |
الطرق (حسب الترتيب الأبجدي) | يعود | وصف |
---|---|---|
appendItemsByTag($tagName, $data) | bool | إلحاق العناصر بواسطة علامة |
appendItemsByTags(array $tagNames, $data) | bool | إلحاق العناصر بأحد أسماء العلامات المتعددة |
attachItem($item) | void | (إعادة) إرفاق عنصر بالمجمع |
clear() | bool | يسمح لك بإفراغ ذاكرة التخزين المؤقت بالكامل وإعادة التشغيل من البداية |
commit() | bool | يستمر أي عناصر ذاكرة التخزين المؤقت المؤجلة |
decrementItemsByTag($tagName, $step = 1) | bool | إنقاص العناصر حسب العلامة |
decrementItemsByTags(array $tagNames, $step = 1) | bool | تقليل العناصر بواسطة أحد أسماء العلامات المتعددة |
deleteItem($key) | bool | يحذف عنصرًا |
deleteItems(array $keys) | bool | يحذف عنصرًا واحدًا أو أكثر |
deleteItemsByTag($tagName) | bool | حذف العناصر حسب العلامة |
deleteItemsByTags(array $tagNames, int $strategy) | bool | حذف العناصر بواسطة أحد أسماء العلامات المتعددة |
detachItem($item) | void | يفصل عنصرًا عن حوض السباحة |
getConfig() | ConfigurationOption | إرجاع كائن التكوين |
getConfigOption($optionName); | mixed | تُرجع قيمة التكوين بواسطة مفتاحها $optionName |
getDefaultConfig() | ConfigurationOption | إرجاع كائن التكوين الافتراضي (لم يتم تغييره بواسطة مثيل الكائن) |
getDriverName() | string | إرجاع اسم برنامج التشغيل الحالي (بدون مساحة الاسم) |
getEventManager() | EventManagerInterface | يحصل على مدير الحدث |
getHelp() | string | يوفر مساعدة أساسية جدًا لسائق معين |
getInstanceId() | string | إرجاع معرف المثيل |
getItem($key) | ExtendedCacheItemInterface | استرداد عنصر وإرجاع عنصر فارغ إذا لم يتم العثور عليه |
getItems(array $keys) | ExtendedCacheItemInterface[] | استرداد عنصر واحد أو أكثر وإرجاع مجموعة من العناصر. اعتبارًا من الإصدار 9.2، تم إجراء تحسين داخلي على هذه الطريقة. |
getAllItems(string $pattern = '') | ExtendedCacheItemInterface[] | (الإصدار 9.2) يسترد جميع عناصر ذاكرة التخزين المؤقت بحد أقصى 9999 عنصرًا. يقتصر الدعم على بعض برامج التشغيل |
getItemsAsJsonString(array $keys) | string | تُرجع سلسلة json تمثل مصفوفة من العناصر |
getItemsByTag($tagName, $strategy) | ExtendedCacheItemInterface[] | إرجاع العناصر حسب العلامة |
getItemsByTags(array $tagNames, $strategy) | ExtendedCacheItemInterface[] | إرجاع العناصر حسب أحد أسماء العلامات المتعددة |
getItemsByTagsAsJsonString(array $tagNames, $strategy) | string | تُرجع سلسلة json تمثل مصفوفة من العناصر المقابلة |
getStats() | DriverStatistic | إرجاع إحصائيات ذاكرة التخزين المؤقت ككائن، وهو أمر مفيد للتحقق من مساحة القرص التي تستخدمها ذاكرة التخزين المؤقت وما إلى ذلك. |
hasEventManager() | bool | تحقق من مدير الحدث |
hasItem($key) | bool | اختبارات إذا كان العنصر موجودا |
incrementItemsByTag($tagName, $step = 1, $strategy) | bool | زيادة العناصر حسب العلامة |
incrementItemsByTags(array $tagNames, $step = 1, $strategy) | bool | زيادة العناصر بواسطة أحد أسماء العلامات المتعددة |
isAttached($item) | bool | تحقق مما إذا كان العنصر (لا يزال) مرفقًا |
prependItemsByTag($tagName, $data, $strategy) | bool | يُسبق العناصر بواسطة علامة |
prependItemsByTags(array $tagNames, $data, $strategy) | bool | يُلحق العناصر مسبقًا بأحد أسماء العلامات المتعددة |
save(CacheItemInterface $item) | bool | يستمر عنصر ذاكرة التخزين المؤقت على الفور |
saveDeferred(CacheItemInterface $item) | bool | يضبط عنصر ذاكرة التخزين المؤقت ليتم استمراره لاحقًا |
saveMultiple(...$items) | bool | يستمر عناصر ذاكرة التخزين المؤقت المتعددة على الفور |
setEventManager(EventManagerInterface $evtMngr) | ExtendedCacheItemPoolInterface | يضبط مدير الحدث |
في V8 : يتم الآن دعم الاستراتيجيات المتعددة ( $strategy
) لوضع العلامات:
TaggableCacheItemPoolInterface::TAG_STRATEGY_ONE
الحصول على عنصر (عناصر) ذاكرة التخزين المؤقت من خلال علامة واحدة على الأقل من العلامات (العلامات) المطابقة المحددة. السلوك الافتراضي.TaggableCacheItemPoolInterface::TAG_STRATEGY_ALL
الحصول على عنصر (عناصر) ذاكرة التخزين المؤقت من خلال جميع العلامات (العلامات) المطابقة المحددة ( يمكن أن يحتوي عنصر ذاكرة التخزين المؤقت على علامات (علامات) إضافية))TaggableCacheItemPoolInterface::TAG_STRATEGY_ONLY
الحصول على عنصر (عناصر) ذاكرة التخزين المؤقت عن طريق العلامة (العلامات) المطابقة المحددة فقط ( لا يمكن أن يحتوي عنصر ذاكرة التخزين المؤقت على علامة (علامات) إضافية))كما أنه يدعم المكالمات المتعددة، ووضع العلامات، ومجلد الإعداد للتخزين المؤقت. انظر إلى مجلدات الأمثلة لدينا لمزيد من المعلومات.
يوفر Phpfastcache فئة توفر لك معلومات أساسية حول تثبيت Phpfastcache
PhpfastcacheApi::GetVersion();
PhpfastcacheApi::getChangelog();
PhpfastcacheApi::getPhpfastcacheVersion();
PhpfastcacheApi::getPhpfastcacheChangelog();
أخبار جيدة، اعتبارًا من الإصدار V6، يتم توفير محول Psr16 للحفاظ على ذاكرة التخزين المؤقت أبسط باستخدام أدوات الحروف/الأدوات الأساسية جدًا:
get($key, $default = null);
set($key, $value, $ttl = null);
delete($key);
clear();
getMultiple($keys, $default = null);
setMultiple($values, $ttl = null);
deleteMultiple($keys);
has($key);
الاستخدام الأساسي:
<?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
*/
داخليًا، يقوم محول Psr16 باستدعاء Phpfastcache Api عبر مدير ذاكرة التخزين المؤقت.
اعتبارًا من الإصدار V6، يوفر Phpfastcache آلية للحدث. يمكنك الاشتراك في حدث عن طريق تمرير إغلاق لحدث نشط:
<?php
use Phpfastcache EventManager ;
/**
* Bind the event callback
*/
EventManager:: getInstance ()-> onCacheGetItem ( function ( ExtendedCacheItemPoolInterface $ itemPool , ExtendedCacheItemInterface $ item ){
$ item -> set ( ' [HACKED BY EVENT] ' . $ item -> get ());
});
يمكن إلغاء ربط رد الاتصال بالحدث ولكن يجب عليك تقديم اسم لرد الاتصال مسبقًا:
<?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 ' );
بدءًا من الإصدار V8، يمكنك ببساطة الاشتراك في كل حدث لـ Phpfastcache.
مزيد من المعلومات حول التنفيذ والأحداث متاحة على Wiki
بدءًا من الإصدار V6، يوفر Phpfastcache بعض الأدوات المساعدة لتسهيل عملية التعليمات البرمجية.
قد يأتي المزيد في المستقبل، فلا تتردد في المساهمة!
راجع WIKI لمعرفة كيفية تنفيذ ميزة تجميع ذاكرة التخزين المؤقت المجمعة.
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
بالنسبة للمطورين الفضوليين، هناك الكثير من الأمثلة الأخرى المتاحة هنا.
وجدت مشكلة أو لديك فكرة؟ تعال هنا واسمحوا لنا أن نعرف!