elephant-php/ttl
Composer 安装命令:
composer require elephant-php/ttl
包简介
An immutable Time To Live value object for the cache and other places where you need to specify a time rather than a magic value.
关键字:
README 文档
README
TTL - Time To Live
An immutable Time To Live value object for the cache and other places where you need to specify a time rather than a magic value.
Requirements
- PHP 8.1 or higher.
Installation
The package could be installed with Composer:
composer require elephant-php/ttl
Configuration
Abstract example for your cache
/** @var \Psr\SimpleCache\CacheInterface $psrCache */ $cache = new Cache();
Ttl object
Ttl is a simple immutable value object that represents cache time-to-live (TTL) in seconds.
It eliminates magic numbers (like 60 * 60 or 3600), improves readability, and provides convenient factory methods.
Below are examples on how to use it.
If you're using PSR-16 cache adapter directly:
- TTL must be an integer number of seconds or
nullfor infinite lifetime. - Always use
->toSeconds()when usingTtlobject.
use Elephant\Ttl\Ttl; $cache = new Cache(); $cache->set('key1', 'value1', Ttl::seconds(30)->toSeconds()); // 30 seconds $cache->set('key2', 'value2', Ttl::minutes(15)->toSeconds()); // 15 minutes $cache->set('key3', 'value3', Ttl::hours(2)->toSeconds()); // 2 hours $cache->set('key4', 'value4', Ttl::days(1)->toSeconds()); // 1 day // Complex durations $ttl = Ttl::create(sec: 30, min: 10, hour: 1); // 1 hour 10 minutes 30 seconds $cache->set('key', 'value', $ttl->toSeconds()); // Infinity / no expiration $cache->set('key6', 'value6', Ttl::forever()); // shorthand for null $cache->set('key7', 'value7', Ttl::from(null));
Creating and Normalizing TTL
The Ttl::from() method normalizes various TTL representations (Ttl, DateInterval, int, string, or null) into a Ttl object.
$ttl = Ttl::from(new DateInterval('PT45M')); // 45 minutes $ttl = Ttl::from(10); // 10 seconds $ttl = Ttl::from('12'); // 12 seconds $ttl = Ttl::from(null); // Infinity / no expiration $ttl = Ttl::from(Ttl::seconds(500)); $ttl = Ttl::create(sec: 30, min: 15); // From DateInterval $ttl = Ttl::fromInterval(new DateInterval('PT45M')); $cache->set('key', 'value', $ttl->toSeconds()); // Ttl::forever() is just a shorthand for `null` TTL (no expiration) $cache->set('key', 'value', Ttl::forever()->toSeconds()); // or $cache->set('key', 'value', Ttl::from(null)->toSeconds());
When using Ttl with You cache wrapper:
- You can pass a
Ttlobject in the constructor as the default value. - You can pass it to methods like
getOrSet()which expect integer number of seconds ornull.
use Your\Cache\Cache; use Your\Cache\ArrayCache; use Elephant\Ttl\Ttl; $cache = new Cache(new ArrayCache(), Ttl::minutes(5)); // default TTL $cache->getOrSet('key', 'value'); // // Uses default TTL // Custom TTL $cache->getOrSet('key2', fn() => 'value2', Ttl::seconds(30)->toSeconds()); $cache->getOrSet('key3', fn() => 'value3', Ttl::forever()->toSeconds()); // No expiration
Additional Features
Checking Infinite TTL:
Use isForever() to check if a TTL represents "forever" (i.e., no expiration). It returns true when the TTL value is null.
if (Ttl::from(null)->isForever()) { // No expiration }
Accessing TTL Value
Use toSeconds() to get the TTL in seconds (int) or null for "forever". The public $value property can be accessed directly (e.g., Ttl::seconds(30)->value), but toSeconds() is preferred for clarity.
$ttl = Ttl::seconds(60); $seconds = $ttl->toSeconds(); // Returns 60 $seconds = $ttl->value; // Also 60
Invalid TTL values
$ttl = Ttl::from('abc'); // Converts to 0 (expired) $ttl = Ttl::from(1.5); // TypeError: invalid TTL type
License
MIT License
Please see LICENSE for more information.
elephant-php/ttl 适用场景与选型建议
elephant-php/ttl 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 7 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 03 月 03 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「cache」 「caching」 「Value Object」 「expiration」 「Http Cache」 「ttl」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 elephant-php/ttl 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 elephant-php/ttl 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 elephant-php/ttl 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
repository php library
Query caching for Laravel 5
Runn Me! Value Objects Library
MaxAl Subscriptions is a flexible plans and subscription management system for Laravel, with the required tools to run your SAAS like services efficiently. It's simple architecture, accompanied by powerful underlying to afford solid platform for your business.
Laravel 5 - Repositories to the database layer
Simple PHP caching system that uses a tmp folder in a Linux environment.
统计信息
- 总下载量: 7
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 33
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-03