flightphp/cache
轻量、简单且独立的 PHP 文件缓存类,fork 自 Wruczek/PHP-File-Cache
优点
- 轻量、独立且简单
- 所有代码都在一个文件中 - 无需无意义的驱动程序。
- 安全 - 每个生成的缓存文件都有一个带有 die 的 php 头,即使有人知道路径且服务器配置不正确,也无法直接访问
- 文档完善且经过测试
- 通过 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 是一个在引导文件中或应用其他地方设置的常量
$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 秒检查缓存值是否存在
你可以使用 exists() 方法检查缓存中是否存在某个值。
if(Flight::cache()->exists('simple-cache-test')) {
// 执行某些操作
}使用元数据提取缓存
如果你想提取时间戳和其他关于缓存条目的元数据,请确保将 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 "最新缓存保存: $cacheddate, $expiresin 秒后过期";源代码
访问 https://github.com/flightphp/cache 查看代码。