Download the PHP package ryanhellyer/stale-cache without Composer

On this page you can find all versions of the php package ryanhellyer/stale-cache. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package stale-cache

StaleCache

A PHP implementation of the stale-while-revalidate caching pattern for WordPress.

Serve stale content instantly while asynchronously refreshing the cache — zero wait time for your users.

Overview

StaleCache brings the stale-while-revalidate caching strategy to WordPress, heavily inspired by Laravel's Cache::flexible(). When cached data expires, the library serves the existing (stale) content immediately while triggering a background refresh — eliminating the performance penalty of synchronous cache regeneration.

This pattern is especially valuable for expensive operations like API calls, complex database queries, or rendered template fragments where you cannot afford to block a request.


Features


Installation

Requires PHP 8.2+.


Quick Start

That's it. The first request populates the cache; subsequent requests within the stale window serve the cached value; once expired, stale content is served while the callback runs off the critical path.


How It Works

The cache transitions through three lifecycle states:

State Behaviour
Fresh Content is served directly from the cache. No overhead.
Stale Content is served from the cache. A shutdown hook acquires a lock and asynchronously re-executes the callback.
Missing No cached value exists. The callback runs synchronously, the result is stored, and the stale timestamp is set.

Locking

When the cache enters the stale state, the first process to encounter it acquires a refresh lock (stored alongside the cache). Subsequent concurrent requests see the lock and serve stale content without attempting to regenerate — preventing the classic cache stampede.


API Reference

StaleCache::get(string $key, array $times, callable $callback): mixed

Static facade for the simplest use case. Internally instantiates the class with WordPress defaults.

Parameter Type Description
$key string Unique cache key
$times array<int> [stale_time, cache_duration, lock_duration?] (in seconds)
$callback callable The expensive operation to execute and cache

StaleCache::__construct(string $key, array $times, CacheStore $store, ?HookManager $hooks = null)

Dependency-injectable constructor for custom backends.

StaleCache::resolve(callable $callback): mixed

Orchestrates the full resolve cycle. Called automatically by ::get().

Interfaces

CacheStore

HookManager

Included Implementations

Class Implements Description
WordPressTransientStore CacheStore Stores values via set_transient() / get_transient()
WordPressHookManager HookManager Registers shutdown callbacks via add_action('shutdown', ...)

Configuration

The $times array accepts up to three integers:

Parameter Default Description
stale_time required Seconds the cache is considered fresh
cache_duration required Total TTL for the cached value
lock_duration 3600 (1 hour) How long the refresh lock is held

Tip: Set lock_duration high enough to cover the worst-case execution time of your callback. The lock is deleted automatically after the refresh completes.


Performance


Development

Requirements

Setup

Scripts

Command Description
composer test Run the PHPUnit test suite
composer phpcs Check PSR-12 coding standards
composer phpcs-fix Auto-fix coding standards violations
composer phpstan Run static analysis (Level 8)

Static Analysis

This project enforces PHPStan Level 8 — the strictest level — ensuring complete type safety across the entire codebase.


Contributing

Contributions are welcome. Please ensure your changes:

  1. Pass all existing tests (composer test)
  2. Meet PSR-12 coding standards (composer phpcs)
  3. Pass PHPStan Level 8 (composer phpstan)

Submit a pull request and include a clear description of the change and any relevant issue numbers.


License

This project is open-sourced software licensed under the GPL v2 license.


All versions of stale-cache with dependencies

PHP Build Version
Package Version
Requires php Version >=8.2
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package ryanhellyer/stale-cache contains the following files

Loading the files please wait ...