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 2024Releases
latest 32-
1.5.420 Dec 2024 -
1.5.302 Apr 2024Release notes
Open source →Fixed
- Fixed Redis TLL override on failure to add key
Changed
- Moved to PHPUnit >=10.x and attributes
-
1.5.210 Jan 2024Release notes
Open source →Fixed
- Stampede: removed unnecessary wait caused by lingering stampede key
Changed
- Refactored tests for PHPUnit 10.x compat
-
1.5.126 Jan 2023Release notes
Open source →Also added a check to confirm that an expiration of 0
actually means infinite, not "expire now" -
1.5.010 Nov 2022Release notes
Open source →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)
-
1.4.910 Nov 2022Release notes
Open source →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
-
1.4.827 Jan 2021Release notes
Open source →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
casin transactional cache - Fix PHP8 warning in PostgreSQL
set
-
1.4.730 Aug 2019Release notes
Open source →Fixed
- Updated Couchbase install instructions in PHP Docker images
- Updated
implodeparameter order for PHP7.4 compliance
-
1.4.614 Feb 2018 -
1.4.505 Dec 2017Release notes
Open source →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
$tokencan be int as well as float - Fix obscure issue where
$valueis considerednull - Count MemoryStore collections towards the memory limit
- Fix PSR SimpleCache to KeyValueStore TTL conversion logic
- Add more workarounds for Couchbase's imprecise expiration purging
-
1.4.412 May 2017Release notes
Open source →Fixed
- Support Memcached>=3.0 new getMulti method signature
- Throw exceptions for Memcached getMulti false (= error) result
-
1.4.301 Mar 2017Release notes
Open source →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
-
1.4.207 Feb 2017Release notes
Open source →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
-
1.4.103 Jan 2017Release notes
Open source →Fixed
- Return value of PSR-16 delete should always be true
- Improved PSR-16 checks for invalid (characters in) keys
-
1.4.002 Jan 2017Release notes
Open source →Added
- Added support for collections
Changed
- Officialize psr/simple-cache support
-
1.3.109 Dec 2016Release notes
Open source →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()tohas()
Fixed
- Fixed Redis handling of non-expiring ttls
Removed
- Removed PSR-16 CounterInterface & its methods
- Added $default param to PSR-16's
-
1.3.020 Sep 2016Release notes
Open source →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
-
1.2.209 May 2016Release notes
Open source →Fixed
- Make sure expired items are also stored (they may override existing value)
-
1.2.105 Apr 2016 -
1.2.021 Mar 2016Release notes
Open source →Removed
- Removed Taggable, since it seems
cache/taggable-cachenow does the same - Removed deprecated Filesystem adapter
- Removed Taggable, since it seems
-
1.1.001 Feb 2016Release notes
Open source →Added
- Added sharding class
Fixed
- MemoryStore no longer evicts everything if infinite memory is allocated to PHP
-
1.0.1022 Jan 2016 -
1.0.914 Jan 2016Release notes
Open source →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
getresult 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
-
1.0.813 Jan 2016Release notes
Open source →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
-
1.0.723 Dec 2015Release notes
Open source →Added
- Properly support PHPUnit's --filter to narrow down adapters
Fixed
- Distinguish between
false& no value in cache, where $token should be null
-
1.0.614 Dec 2015Release notes
Open source →Added
- composer.json now requires
psr/cache
Changed
- Travis scripts no longer install services but user Docker containers
- All
Psr6methods accepting$keynow throw InvalidArgumentException
Removed
- Removed included
Psr\Cachefiles
Fixed
- Fixed Couchbase
flushreturn value
- composer.json now requires
-
1.0.517 Nov 2015Release notes
Open source →Added
- Added stampede protection
Fixed
- Made Redis
multi/execconsistently return array
-
1.0.404 Nov 2015Release notes
Open source →Added
- Added
Psr6\Pool::hasItem, per PSR-6 spec - Added
Psr6\Pool::deleteItem, per PSR-6 spec
Changed
Psr6\Pool::deleteItemsreturns result instead ofstatic, per PSR-6 specPsr6\Pool::savereturns result instead ofstatic, per PSR-6 specPsr6\Pool::saveDeferredreturns result instead ofstatic, 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
- Added
-
1.0.321 Oct 2015Release notes
Open source →Added
- Added
league/flysystemadapter
Removed
- Deprecated Filesystem adapter
- Added
-
1.0.217 Oct 2015Release notes
Open source →Changed
- Optimized transactions (e.g. multiple
setcan be combined intosetMulti) - Transaction rollback now restores original values, instead of clearing them
Fixed
- When doing
seton existing value in MemoryStore, don't doublecount the size - Fixed SQL return values when replacement value is the same
- Optimized transactions (e.g. multiple
-
1.0.114 Oct 2015Release notes
Open source →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
- Added
-
1.0.004 Sep 2015Release notes
Open source →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