PackageTrack
Sign in Get early access

matthiasmullie/scrapbook

Scrapbook is a PHP cache library, with adapters for e.g. Memcached, Redis, Couchbase, APCu, SQL and additional capabilities (e.g. transactions, stampede protection) built on top.

1.5.4 3.0M downloads/mo #2676 most downloaded on Packagist matthiasmullie/scrapbook

What this package is like to depend on

Last release 2 years ago

no release in 18 months

Release timing varies

gaps range from 3 weeks to 1.8 years

Nearly every release is documented

notes for 32 of 32 stable releases

Nothing withdrawn

no release was ever pulled

11 years old

32 releases · first in 2015

0 releases in the last 12 months

see the full history below

Release timeline

32 releases · Sep 2015 to Dec 2024
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 32
  1. 1.5.4 20 Dec 2024
    Release notes

    Add tests for PHP8.4 and report error thoroughly

    Open source →
    Release notes

    Fixed

    • Fixed PHP 8.4 deprecation of implicit nullable parameters
    Open source →
  2. 1.5.3 02 Apr 2024
    Release notes

    Fixed

    • Fixed Redis TLL override on failure to add key

    Changed

    • Moved to PHPUnit >=10.x and attributes
    Open source →
  3. 1.5.2 10 Jan 2024
    Release notes

    & prepare for release

    Open source →
    Release notes

    Fixed

    • Stampede: removed unnecessary wait caused by lingering stampede key

    Changed

    • Refactored tests for PHPUnit 10.x compat
    Open source →
  4. 1.5.1 26 Jan 2023
    Release notes

    Also added a check to confirm that an expiration of 0
    actually means infinite, not "expire now"

    Open source →
    Release notes

    Fixed

    • Fixed Couchbase's updated expiration handling
    Open source →
  5. 1.5.0 10 Nov 2022
    Release notes

    All are supported (ATM)

    Open source →
    Release notes

    Added

    • Compatibility with psr/cache version 3
    • Compatibility with psr/simple-cache version 3

    Changed

    • Type declarations everywhere

    Removed

    • Removed support for PHP versions <8.0
    • Removed support for Couchbase SDK <3.0
    • Removed support for APC (not APCu)
    Open source →
  6. 1.4.9 10 Nov 2022
    Release notes

    Fixes #48

    Open source →
    Release notes

    Added

    • Added support for Couchbase v3.x & 4.x versions
    • Added psr/cache & psr/simple-cache 2.0 compatibility to composer.json

    Fixed

    • Fixed (invalid) APCUIterator check
    • Improved handling of Memcached's untimely expiration purge
    • Fixed Redis in-/decrement return value for non-existing values with negative expiration
    • Fixed StampedeProtector lock time

    Changed

    • Dropped built-in server health check option with Couchbase SDK v3.x/4.x support
    Open source →
  7. 1.4.8 27 Jan 2021
    Release notes

    Verify that key length is not exceeded for Couchbase

    Open source →
    Release notes

    Added

    • Added support for later Couchbase v2.x versions

    Fixed

    • Fixed Flysystem support for long keys
    • Fixed non-existing getMulti results with certain Redis versions
    • Allow longer keys in MySQL-backed cache
    • Made handling of binary values with PostgreSQL more robust
    • Add support for Flysystem v2.x
    • Fix PHP8 error with cas in transactional cache
    • Fix PHP8 warning in PostgreSQL set
    Open source →
  8. 1.4.7 30 Aug 2019
    Release notes

    Fixed

    • Updated Couchbase install instructions in PHP Docker images
    • Updated implode parameter order for PHP7.4 compliance
    Open source →
  9. 1.4.6 14 Feb 2018
    Release notes

    Fixes #34

    Open source →
    Release notes

    Fixed

    • Safeguard Apc::getMulti for false returned by apcu_fetch
    Open source →
  10. 1.4.5 05 Dec 2017
    Release notes

    Add more workarounds for Couchbase's imprecise expiration purging

    Open source →
    Release notes

    Added

    • Dockerize everything needed for testing adapters & versions
    • Add test support for Couchbase 5.0
    • Add makefile instructions

    Changed

    • Use more direct ON CONFLICT functionality for PostgreSQL sets

    Fixed

    • Memcached::cas $token can be int as well as float
    • Fix obscure issue where $value is considered null
    • Count MemoryStore collections towards the memory limit
    • Fix PSR SimpleCache to KeyValueStore TTL conversion logic
    • Add more workarounds for Couchbase's imprecise expiration purging
    Open source →
  11. 1.4.4 12 May 2017
    Release notes

    Fixed

    • Support Memcached>=3.0 new getMulti method signature
    • Throw exceptions for Memcached getMulti false (= error) result
    Open source →
  12. 1.4.3 01 Mar 2017
    Release notes

    Added

    • Include cache/integration-tests test suite for PSR-16

    Fixed

    • Made APC store setMulti with integer keys
    • Let APC getMulti return values for numerical keys
    • Short-circuit getting/setting/deleting multiple keys
    • Make sure SQLite treats numerical keys as strings, not numbers
    • Support numerical keys with Couchbase
    • Fix how Couchbase (failed to) handle negative TTLs
    • Make Memcached delete-by-expiration more reliable
    • Make HHVM work with numerical cache keys in Memcached::setMulti
    • Fix Memcached::get for keys that would get encoded
    • SQL adapters expire on the exact second, not one later
    Open source →
  13. 1.4.2 07 Feb 2017
    Release notes

    Fixed

    • Stricter handling of invalid keys in Traversables passed to PSR-16
    • Allow integers to be used as keys for PSR-16
    • Treat a TTL of 0 as expired for PSR-16
    • Always return true for PSR-16 deleteMultiple, even when item didn't exist
    Open source →
  14. 1.4.1 03 Jan 2017
    Release notes

    Fixed

    • Return value of PSR-16 delete should always be true
    • Improved PSR-16 checks for invalid (characters in) keys
    Open source →
  15. 1.4.0 02 Jan 2017
    Release notes

    Added

    • Added support for collections

    Changed

    • Officialize psr/simple-cache support
    Open source →
  16. 1.3.1 09 Dec 2016
    Release notes

    Added

    • Added $default param to PSR-16's get()
    • Added APCu support
    • Strict argument checks for PSR-16 methods
    • Return a boolean for PSR-16 delete, clear & deleteMulti

    Changed

    • Treat all PSR-16 TTL's as relative
    • Renamed PSR-16 exists() to has()

    Fixed

    • Fixed Redis handling of non-expiring ttls

    Removed

    • Removed PSR-16 CounterInterface & its methods
    Open source →
  17. 1.3.0 20 Sep 2016
    Release notes

    Added

    • Add preliminary support for proposed PSR-16

    Changed

    • Throw exception when invalid object is fed to Item::expiresAt

    Fixed

    • Don't cause PHP warnings when Redis connection fails on get/getMulti
    • Stop using Couchbase's counter, which is not typesafe
    • Fixed Couchbase setMulti & deleteMulti failure return values
    Open source →
  18. 1.2.2 09 May 2016
    Release notes

    Fixed

    • Make sure expired items are also stored (they may override existing value)
    Open source →
  19. 1.2.1 05 Apr 2016
    Release notes

    Fixed

    • Made MySQL's value a LONGBLOB, which can store bigger values
    Open source →
  20. 1.2.0 21 Mar 2016
    Release notes

    Removed

    • Removed Taggable, since it seems cache/taggable-cache now does the same
    • Removed deprecated Filesystem adapter
    Open source →
  21. 1.1.0 01 Feb 2016
    Release notes

    Added

    • Added sharding class

    Fixed

    • MemoryStore no longer evicts everything if infinite memory is allocated to PHP
    Open source →
  22. 1.0.10 22 Jan 2016
    Release notes

    Fixed

    • Don't let expired deferred items appear to have hit cache
    Open source →
  23. 1.0.9 14 Jan 2016
    Release notes

    Added

    • Add cache/taggable-cache implementation that works for all PSR-6 libraries
    • Include cache/integration-tests test suite for PSR-6

    Changed

    • Revamped unit tests: no longer use dataProvider, but provide grouped suites

    Fixed

    • Worked around APC's weird behavior of only clearing expires per page request
    • Store get result in buffer if it wasn't in there already
    • Encode certain characters in Memcached keys
    • Serialize arrays & objects in Couchbase, because it forgets their data type
    Open source →
  24. 1.0.8 13 Jan 2016
    Release notes

    Fixed

    • Deferred items now register as hit in psr/cache Item
    • Non-string keys now fail in psr/cache Pool
    • Deleting non-existing keys from cache also return true in psr/cache Pool
    • Auto-commit deferred items on psr/cache Pool destruction
    • If psr/cache Item::expiresAfter is passed null explicitly, default to forever
    • SQL adapters now also return same data type as was stored for numerics
    • Fixed psr/cache Pool::save return value when storing a non-existing Item
    Open source →
  25. 1.0.7 23 Dec 2015
    Release notes

    Added

    • Properly support PHPUnit's --filter to narrow down adapters

    Fixed

    • Distinguish between false & no value in cache, where $token should be null
    Open source →
  26. 1.0.6 14 Dec 2015
    Release notes

    Added

    • composer.json now requires psr/cache

    Changed

    • Travis scripts no longer install services but user Docker containers
    • All Psr6 methods accepting $key now throw InvalidArgumentException

    Removed

    • Removed included Psr\Cache files

    Fixed

    • Fixed Couchbase flush return value
    Open source →
  27. 1.0.5 17 Nov 2015
    Release notes

    Added

    • Added stampede protection

    Fixed

    • Made Redis multi/exec consistently return array
    Open source →
  28. 1.0.4 04 Nov 2015
    Release notes

    Added

    • Added Psr6\Pool::hasItem, per PSR-6 spec
    • Added Psr6\Pool::deleteItem, per PSR-6 spec

    Changed

    • Psr6\Pool::deleteItems returns result instead of static, per PSR-6 spec
    • Psr6\Pool::save returns result instead of static, per PSR-6 spec
    • Psr6\Pool::saveDeferred returns result instead of static, per PSR-6 spec

    Removed

    • Removed Psr6\Item::exists, per PSR-6 spec
    • Removed Psr6\Item::getExpiration, per PSR-6 spec

    Fixed

    • Make sure CAS tokens are null if value doesn't exist
    • Normalized CAS token result on HHVM
    • Restored original Filesystem adapter (for PHP5.3 B/C), but still deprecated
    Open source →
  29. 1.0.3 21 Oct 2015
    Release notes

    Added

    • Added league/flysystem adapter

    Removed

    • Deprecated Filesystem adapter
    Open source →
  30. 1.0.2 17 Oct 2015
    Release notes

    Changed

    • Optimized transactions (e.g. multiple set can be combined into setMulti)
    • Transaction rollback now restores original values, instead of clearing them

    Fixed

    • When doing set on existing value in MemoryStore, don't doublecount the size
    • Fixed SQL return values when replacement value is the same
    Open source →
  31. 1.0.1 14 Oct 2015
    Release notes

    Added

    • Added Psr6\Item::expiresAt, per PSR-6 spec
    • Added Psr6\Item::expiresAfter, per PSR-6 spec
    • Added memory limit to MemoryStore & evict data, to prevent it from crashing
    • Execute tests/Adapters/*, there can be adapter-specific tests too
    • Implement nested transactions

    Changed

    • Explicitly test file existence instead of using @file_get_contents

    Removed

    • Removed Psr6\Item::setExpiration, per PSR-6 spec

    Fixed

    • SQL adapter returns early if there's no data to be deleted
    Open source →
  32. 1.0.0 04 Sep 2015
    Release notes

    Added

    • Apc adapter
    • Couchbase adapter
    • Filesystem adapter
    • Memcached adapter
    • MySQL adapter
    • PostgreSQL adapter
    • Redis adapter
    • SQLite adapter
    • MemoryStore adapter, for testing
    • Buffered cache, to prevent multiple lookups for same value
    • Transactional cache, to guarantee consistency of storing multiple values
    • PSR-6 compatible interface for all of the above
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive