azjezz/psl
PSL is a modern, well-typed standard library for PHP 8.4+, inspired by HHVM’s HSL. It offers safer, predictable APIs for async, collections, networking, I/O, crypto, terminal UI, and robust data validation—replacing brittle built-ins with consistent alternatives.
The Cache component provides an async-safe in-memory LRU cache with per-key atomicity. It prevents cache stampedes in concurrent fiber environments - if two fibers request the same key simultaneously, only one computes the value while the other waits.
compute() is the primary API - get a cached value or compute it if absent. update() always recomputes, receiving the old value.
@example('other/cache-basic.php')
Operations on the same key are serialized via KeyedSequence. Different keys run in parallel with no blocking.
@example('other/cache-async.php')
LocalStore maintains a bounded cache with configurable maximum size. When full, the least recently used entry is evicted. Accessed entries are promoted to most-recently-used.
Entries with a TTL are proactively cleaned up via an event loop timer, not lazily on access. The timer activates when TTL'd entries exist and disables itself when none remain, adding zero overhead when no entries have expiration.
NullStore implements StoreInterface but never caches - every compute() invokes the computer, every get() throws. Useful for testing or disabling caching without changing calling code.
See src/Psl/Cache/ for the full API.
How can I help you explore Laravel packages today?