flightphp/cache

Легка, проста та автономна PHP-бібліотека для кешування у файлах, відгалужена від Wruczek/PHP-File-Cache

Переваги

  • Легка, автономна та проста
  • Весь код в одному файлі - ніяких зайвих драйверів.
  • Безпечна - кожен згенерований файл кешу має PHP-заголовок з die, що робить прямий доступ неможливим, навіть якщо хтось знає шлях і ваш сервер налаштований неправильно
  • Добре задокументована та протестована
  • Коректно обробляє конкурентність через flock
  • Підтримує PHP 7.4+
  • Безкоштовна за ліцензією MIT

Цей сайт документації використовує цю бібліотеку для кешування кожної зі сторінок!

Натисніть тут, щоб переглянути код.

Встановлення

Встановіть через composer:

composer require flightphp/cache

Використання

Використання досить просте. Це зберігає файл кешу в директорії кешу.

use flight\Cache;

$app = Flight::app();

// Ви передаєте директорію, де буде зберігатися кеш, у конструктор
$app->register('cache', Cache::class, [ __DIR__ . '/../cache/' ], function(Cache $cache) {

    // Це гарантує, що кеш буде використовуватися лише в режимі продакшену
    // ENVIRONMENT - це константа, яка встановлюється у вашому bootstrap-файлі або в іншому місці вашого застосунку
    $cache->setDevMode(ENVIRONMENT === 'development');
});

Отримання значення кешу

Використовуйте метод get() для отримання кешованого значення. Якщо вам потрібен зручний метод, який оновить кеш, якщо він застарів, ви можете використовувати refreshIfExpired().


// Отримати екземпляр кешу
$cache = Flight::cache();
$data = $cache->refreshIfExpired('simple-cache-test', function () {
    return date("H:i:s"); // повернути дані для кешування
}, 10); // 10 секунд

// або
$data = $cache->get('simple-cache-test');
if(empty($data)) {
    $data = date("H:i:s");
    $cache->set('simple-cache-test', $data, 10); // 10 секунд
}

Зберігання значення кешу

Використовуйте метод set() для збереження значення в кеші.

Flight::cache()->set('simple-cache-test', 'my cached data', 10); // 10 секунд

Видалення значення кешу

Використовуйте метод delete() для видалення значення в кеші.

Flight::cache()->delete('simple-cache-test');

Перевірка наявності значення кешу

Використовуйте метод exists() для перевірки, чи існує значення в кеші.

if(Flight::cache()->exists('simple-cache-test')) {
    // зробити щось
}

Очищення кешу

Використовуйте метод flush() для очищення всього кешу.

Flight::cache()->flush();

Отримання метаданих кешу

Якщо ви хочете витягнути мітки часу та інші метадані про запис кешу, переконайтеся, що передаєте true як правильний параметр.

$data = $cache->refreshIfExpired("simple-cache-meta-test", function () {
    echo "Refreshing data!" . PHP_EOL;
    return date("H:i:s"); // повернути дані для кешування
}, 10, true); // true = повернути з метаданими
// або
$data = $cache->get("simple-cache-meta-test", true); // true = повернути з метаданими

/*
Приклад кешованого елемента, отриманого з метаданими:
{
    "time":1511667506, <-- unix мітка часу збереження
    "expire":10,       <-- час закінчення дії в секундах
    "data":"04:38:26", <-- десеріалізовані дані
    "permanent":false
}

Використовуючи метадані, ми можемо, наприклад, обчислити, коли елемент був збережений або коли він закінчується
Ми також можемо отримати доступ до самих даних за допомогою ключа "data"
*/

$expiresin = ($data["time"] + $data["expire"]) - time(); // отримати unix мітку часу, коли дані закінчуються, і відняти від неї поточну мітку часу
$cacheddate = $data["data"]; // ми отримуємо доступ до самих даних за допомогою ключа "data"

echo "Latest cache save: $cacheddate, expires in $expiresin seconds";

Вихідний код

Відвідайте https://github.com/flightphp/cache, щоб переглянути код.