Download the PHP package fyennyi/async-cache-php without Composer
On this page you can find all versions of the php package fyennyi/async-cache-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download fyennyi/async-cache-php
More information about fyennyi/async-cache-php
Files in fyennyi/async-cache-php
Package async-cache-php
Short Description Asynchronous caching library with rate limiting and stale-while-revalidate support.
License LicenseRef-CSSM-Unlimited-2.0
Informations about the package async-cache-php
Async Cache PHP
An asynchronous caching abstraction layer for PHP with built-in rate limiting and stale-while-revalidate support. This library is designed to wrap promise-based operations (like ReactPHP Promises) to provide robust caching strategies suitable for high-load or rate-limited API clients.
Features
- Asynchronous Caching: Wraps
PromiseInterfaceor any callable returning a value/promise to handle caching transparently without blocking execution. - Stale-While-Revalidate: Supports background revalidation and stale-on-error patterns.
- X-Fetch (Probabilistic Early Recomputation): Implements the X-Fetch algorithm to prevent cache stampedes (dog-pile effect).
- Atomic Operations: Support for atomic
incrementanddecrementoperations using Symfony Lock. - Logical vs. Physical TTL: Separates the "freshness" of data from its "existence" in the cache, enabling soft expiration patterns.
- Rate Limiting Integration: Supports Symfony Rate Limiter for request throttling.
- PSR-16 & ReactPHP Compatible: Works with any PSR-16 Simple Cache adapter or ReactPHP Cache implementation.
Installation
To install the Async Cache PHP library, run the following command in your terminal:
Usage
Basic Setup
The easiest way to create a manager is using the fluent configuration API.
Wrapping an Async Operation
Use the wrap method to cache a promise-based operation.
Advanced Configuration Options
The CacheOptions DTO allows you to configure behavior per request:
Atomic Increments
How It Works
- Cache Hit: If data is found in the cache and is fresh (within
ttl), the promise resolves immediately with the cached value. The factory function is not called. - Cache Miss: If data is not found, the factory function is executed, and the result is stored in the cache.
- Stale Data:
- If data is in the cache but expired (older than
ttl), the manager behavior depends on the chosenstrategy. - Strict: Fetches fresh data while the request waits.
- Background: Returns stale data immediately and triggers an asynchronous refresh in the background.
- If data is in the cache but expired (older than
- X-Fetch: Helps avoid simultaneous cache misses for the same key by probabilistic early recomputation.
Contributing
Contributions are welcome and appreciated! Here's how you can contribute:
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please make sure to update tests as appropriate and adhere to the existing coding style.
License
This library is licensed under the CSSM Unlimited License v2.0 (CSSM-ULv2). See the LICENSE file for details.
All versions of async-cache-php with dependencies
psr/clock Version ^1.0
psr/event-dispatcher Version ^1.0
psr/log Version ^1.0 || ^2.0 || ^3.0
psr/simple-cache Version ^1.0 || ^2.0 || ^3.0
react/async Version ^4.3
react/cache Version ^1.2
react/promise-timer Version ^1.11
symfony/clock Version ^6.3
symfony/lock Version ^6.0 || ^7.0 || ^8.0
symfony/rate-limiter Version ^6.0 || ^7.0 || ^8.0