Ticket #661 (new enhancement)
Implement a storage subsystem
| Reported by: | david | Owned by: | david |
|---|---|---|---|
| Priority: | highest | Milestone: | 1.1 |
| Component: | storage | Version: | |
| Severity: | blocker | Keywords: | |
| Cc: | Patch attached: | no |
Description (last modified by david) (diff)
Right now, Storage is only used for sessions. That is, of course, lame. We want something general-purpose that can be used in app code, for caching, and so on.
With a storage manager, much like the current database manager.
With chained storages (e.g. read from memcache first, then, on failure, from database, but always write to both), lots of drivers
Of course, we need to maintain BC and therefor some smart way to integrate the "session" storage (AgaviMemcacheStorage ... AgaviMemcacheSessionStorage ... AgaviSessionStorage ... fail!), maybe through moving the session read/write/blah into the user, which then uses a storage or such?
BC could be implemented via the factories.xml config handler, because that new feature would, of course, have http://agavi.org/agavi/1.1/config as the namespace! So for a 1.0 NS, it transparently creates a storage manager with just one session storage, and for 1.1, it requires a <storage_manager> tag be there (that would then need a separate storages.xml). And in the case, AgaviContext::getStorage() returns the session storage as it is now. Only really difficult question seems to be this session storage integration in case multiple implementations exist. Maybe a storage decorator or so? :)
Anyway, sounds like a really good candidate for GSoC!

