kozalo/simple-cache

一个非常简单的基于文件的缓存系统

v1.0.1 2017-01-21 21:12 UTC

This package is auto-updated.

Last update: 2024-09-14 18:20:46 UTC


README

对于俄语用户

此类表示最简单的文件缓存实现。您可以在其字段中写入任何可序列化的数据。
如何使用它?

<?php
use ru\kozalo\SimpleCache;

// Создаём объект кэша. В качестве параметра конструктор принимает любую строку, которая станет названием файла для кэша.
// Таким образом можно создавать несколько кэшей с различными наборами данных.
$cache = new SimpleCache('my_cache');

// Магия позволяет работать с данными просто, как полями объекта.
$cache->someData = "Очень важная строка";
echo $cache->someData;

如果您查看类的内部,您会发现构造函数还有两个参数。第二个参数用于禁用对象变化自动反映到磁盘上的实际文件缓存。第三个参数指定缓存文件夹的UNIX权限。
您可能会问:“还有什么文件夹,之前不是只提到了文件吗?”所有缓存文件都整齐地存放在一个专门的目录中。默认情况下,它是网站根目录下的“cache”文件夹。要更改此行为,请在同一根目录中创建一个名为“env.cfg”的PHP文件,该文件必须返回一个键为“cache”的数组,其值也是一个数组,包含键“path”,其中指定了缓存文件夹的路径。示例文件(env.cfg.example)位于存储库的根目录中。

<?php
use ru\kozalo\SimpleCache;

// Отлючим автоматическое сохранение кэша на диск и разрешим полный доступ к папке только владельцу.
// Впрочем, если папка уже создана, параметр `$folderPermissions` не имеет вообще никакой силы.
$cache = new SimpleCache('my_cache', false, 0700);

$cache->calc1 = pi() * 100 + 123456;
$cache->calc2 = pi()^10 - 98765;
$cache->calc3 = log(pi() / 3) * 0.456;

// А теперь вручную сохраним результаты наших вычислений в файл кэша.
$cache->save();

现在我们来分析缓存的一个主要特点:数据过期检查。这需要您自己处理,但缓存会自动保存每个字段插入时的当前时间戳。以下是一个示例。

<?php
use ru\kozalo\SimpleCache;

$cache = new SimpleCache('my_cache');

// Будем считать данные, загруженные раньше, чем 12 часов назад от текущего момента, устаревшими.
$obsolescenceDate = strtotime('-12 hours');

// Метод `getDate()` возвращает *timestamp* со временем, когда данные были занесены в кэш.
// Обнаружив, что данные устарели, обновляем их.
if ($cache->getDate('someData') < $obsolescenceDate)
    $cache->someData = "Обновлённая, но всё ещё важная строка";

如果在代码中已经使用了缓存,但需要立即刷新以加载新数据,或者根据特定条件整个缓存变得无效,可以完全清除它?为此,有一个方法invalidate(),它从磁盘删除缓存文件并清空对象中的缓存表示。
如果需要暂时禁用缓存进行调试或其他目的,只需在创建对象后调用方法disable()。之后,所有其他方法的调用将只返回nullfalse值。要使缓存再次工作,使用对称方法enable()

英文

此类只是一个简单的基于文件的缓存。您有一个对象可以将其可序列化的数据放入其中。
以下是如何使用此类的示例。

<?php
use ru\kozalo\SimpleCache;

// Firstly, we should create an instance of the cache. The constructor takes a string which will be used as the name of a file.
// Due to this parameter, we may use several caches with different sets of data at the same time.
$cache = new SimpleCache('my_cache');

// Magic lets us get and set data very easily.
$cache->someData = "A very important string";
echo $cache->someData;

实际上,如果您查看代码,您会发现构造函数还接受其他两个参数。
默认情况下,每次更改字段值时,库都会同步对象和其后的文件。这可能会更高效,禁用此功能并手动将缓存转储到文件中。
最后一个参数允许您更改缓存文件夹的UNIX权限。
"等等!是什么文件夹?"您可能会问我。好吧,所有缓存文件都存储在专门的目录中。默认情况下,它是网站根目录下的“cache”文件夹。要更改此行为,请在根目录中放置一个名为“env.cfg”的PHP文件。此文件必须返回一个键为“cache”的数组,其值也是一个数组,包含键“path”,其中指定了缓存文件夹的路径。示例文件(env.cfg.example)与此手册一起提供。

<?php
use ru\kozalo\SimpleCache;

// Let's disable auto synchronization and give full access to the owner only.
// Note that permissions only take effect if the folder doesn't exist yet.
$cache = new SimpleCache('my_cache', false, 0700);

$cache->calc1 = pi() * 100 + 123456;
$cache->calc2 = pi()^10 - 98765;
$cache->calc3 = log(pi() / 3) * 0.456;

// Now we have to save our calculations to the file manually.
$cache->save();

关于数据过期,我们如何告诉库更新数据?没有办法。这取决于您。让我给你举个例子。

<?php
use ru\kozalo\SimpleCache;

$cache = new SimpleCache('my_cache');

// Let's consider all data older than 12 hours as obsolete.
$obsolescenceDate = strtotime('-12 hours');

// `getDate()` returns a *timestamp*, which represents the time when a data was put into the cache.
// Finding out that the data is too old, we should update it.
if ($cache->getDate('someData') < $obsolescenceDate)
    $cache->someData = "An updated but still important string";

好的。如果我们想更新整个缓存,或者只是清除所有数据,请使用方法invalidate()。它将删除缓存文件并使缓存对象为空。
如果我们需要暂时禁用缓存进行调试或其他目的,请使用方法disable()。调用它之后,所有其他方法将只返回nullfalse值。要使缓存再次工作,请使用对称方法enable()